Um pipeline de CI que chama verboo trava com erro de autenticação mesmo depois de você configurar uma chave? Até a v0.15.17 do Verboo Code, esse era o comportamento esperado: o portão de autenticação da CLI só reconhecia sessão OAuth, então uma API key vbk_ perfeitamente válida ficava sem uso num ambiente sem terminal interativo. A v0.15.18 corrigiu isso. Este artigo mostra o comando exato pra configurar hoje, com tudo verificado direto no código-fonte de verbeux-ai/code.
Por que o login normal do Verboo Code não funciona num runner de CI?
Porque ele depende de abrir um navegador. Ao rodar verboo numa máquina com terminal interativo, a CLI detecta a ausência de sessão e abre code.verboo.ai automaticamente pra completar o OAuth. Um runner do GitHub Actions, do GitLab CI ou qualquer container efêmero não tem terminal interativo nem navegador, então esse fluxo nunca teria como completar.
O próprio código documenta essa decisão num comentário: "gate de autenticação Verboo. Em TTY abre browser automaticamente; em headless lança erro claro" (src/main.tsx).
Qual variável de ambiente o Verboo Code lê pra autenticar sem navegador?
ANTHROPIC_API_KEY. Não é o VERBOO_API_KEY que a documentação do Router usa pra chamadas HTTP diretas: é a mesma variável que o resto do ecossistema Claude Code usa pra chave de API, e é ela que o gate de inicialização do Verboo Code lê primeiro. Se o valor começar com o prefixo vbk_, a CLI trata como sessão headless válida:
export ANTHROPIC_API_KEY="vbk_sua_chave_aqui"
verboo -p "rode a suite de testes e corrija o que falhar" --output-format json
A chave não é validada contra /api/me, que rejeita chaves de API. Ela é validada com Authorization: Bearer direto no endpoint do roteador, code.verboo.ai/router/v1/models. Essa escolha de endpoint está documentada na própria revisão de código que introduziu o recurso (PR #43 do repositório verbeux-ai/code): o time só trocou de endpoint depois de confirmar que o primeiro não aceitava esse tipo de chave.
Onde eu crio uma chave vbk_?
No painel em code.verboo.ai, no botão "Create API key" no canto superior direito, que leva à página de gerenciamento de chaves. Cada chave fica associada a um grupo de modelos, então vale escolher o mesmo grupo que você já usa no dia a dia antes de colar o valor no secret do CI.
Dá pra manter sessão OAuth, sem chave fixa, e sem abrir navegador no servidor?
Dá. verboo auth login --headless roda o fluxo de OAuth completo sem depender de navegador na própria máquina: a CLI imprime uma URL, você abre em qualquer outro dispositivo, confirma o login e cola de volta o código de autorização no terminal do servidor. É a opção que o próprio time descreve como "ideal para servidores/CI", mas com uma diferença importante em relação à API key: ainda existe um humano no loop, uma vez, então ela serve melhor pra um servidor persistente ou self-hosted runner do que pra um runner efêmero que nasce e morre a cada execução.
| Caminho | Humano no loop | Melhor para |
|---|---|---|
ANTHROPIC_API_KEY=vbk_... | Não, nenhuma vez | Runner efêmero (GitHub Actions, GitLab CI) |
verboo auth login --headless | Sim, uma vez, em outro dispositivo | Servidor persistente ou self-hosted runner |
verbeux-ai/code, PR #43.O que aparece na tela quando a chave está errada ou venceu?
Uma mensagem específica, não o pedido genérico de login: "API key inválida ou expirada". Se não houver chave vbk_ nem sessão OAuth num terminal sem TTY, a mensagem muda pra "Não autenticado no Verboo. Execute verboo /login em um terminal interativo antes de usar o modo headless.". As duas frases estão escritas exatamente assim no código-fonte (verbooStartupAuth.ts), com teste unitário garantindo que uma não vire a outra.
A autenticação por API key pula alguma verificação que eu deveria saber?
Sim, e é intencional. Os fluxos de aceite de termos de uso e de verificação de entitlement (o que garante que sua assinatura está ativa) dependem de endpoints que só aceitam OAuth. No caminho por API key, o Verboo Code pula os dois e vai direto pra sessão. Isso é seguro pro caso comum, mas se a sua esteira precisa bloquear a execução quando os termos mudam ou a assinatura vence, isso não vai acontecer automaticamente só com a chave.
Uma esteira de CI roda a mesma tarefa dezenas de vezes por dia, sem ninguém olhando o terminal. Na Verboo Code, cada uma dessas chamadas usa modelos abertos com token ilimitado, então rodar de novo depois de um teste falho não é decisão de orçamento.



