Trocando de contextos Github facilmente

O problema

Ter diferentes contextos de desenvolvimento — por exemplo, trabalho, projetos pessoais, repositórios diversos e também permissões — torna a gestão dessas permissões uma preocupação que precisa ser tratada de forma segura. Isso é importante, especialmente se usarmos ferramentas agênticas como o Claude. Nesse caso, precisamos delegar a menor quantidade de permissões possível para esse agente, como acesso somente read-only, para que algo que não foi planejado não acabe acontecendo.

As soluções atuais e suas limitações

gh CLI em si tem formas limitadas de trocar de contexto, já que isso não é totalmente automatizado. Se temos duas contas, precisamos usar manualmente gh auth switch <OPTIONS>. Também existem variáveis de ambiente como GH_TOKEN e GH_CONFIG_DIR para trocar contextos, mas elas não são muito práticas quando se precisa mudar de contexto o tempo todo. Opções mais elaboradas exigem escrever scripts e lógica personalizada, o que eventualmente levaria à criação de uma ferramenta própria.

Kalamarnica

Kalamarnica é uma ferramenta de linha de comando que adiciona comandos úteis sobre o gh CLI, voltados para gestão de contextos. Ele traz alguns comandos simples e diretos para gerenciar contextos do GitHub, incluindo kalamarnica bind e kalamarnica apply.

Esses comandos em específico permitem definir contextos por repositório. O comando kalamarnica bind <nome-do-contexto>, executado dentro de um repositório git, vincula um contexto ao repositório atual pelo nome dele; ele guarda o nome do contexto do GitHub em um arquivo chamado .ghcontext. Depois, quando você entra novamente nesse repositório, pode usar kalamarnica apply para trocar para o contexto desse repositório, caso haja algum registrado no arquivo .ghcontext. Você também pode criar um arquivo .envrc (para o direnv) que execute kalamarnica apply automaticamente.

Outra funcionalidade útil é o kalamarnica set-token, que foi a principal razão pela qual decidi criar essa ferramenta. Com o gh, não conseguimos vincular mais de um token à mesma conta do GitHub. Assim, se quisermos ter mais de um token para a nossa conta — por exemplo, um token com permissões somente read-only, que usamos com o Claude — podemos executar kalamarnica set-token --name <nome-do-contexto> <token> para criar um novo contexto com esse novo token, mesmo que ele aponte para a mesma conta.

Ele também possui outros comandos úteis — consulte a documentação para saber mais. O código-fonte do repositório e a documentação estão hospedados em https://github.com/Propfend/kalamarnica.