Conecte o Claude Code, o Cursor e qualquer SDK ao gateway

O Claude Code não sabe que a Atlasberg existe. Ele só acha que a API da Anthropic mora em outro endereço. O mesmo truque vale para Cursor, Codex, Gemini CLI e todos os SDKs oficiais.

Como funciona

Sua ferramenta (Continua falando o protocolo nativo dela.) -> Base URL (Aponta para a rota drop-in correspondente no gateway.) -> Chave virtual (Entra onde ia a chave do provedor. Ou um token pessoal, com SSO.). Duas configurações por ferramenta. Nada mais muda: mesmos comandos, mesmos modelos, mesmo streaming.

Você precisa de uma chave virtual (começa com sk-atlas-) ou, se a sua empresa habilitou o login único para o terminal, de um token pessoal emitido pelo comando atlasberg login. Pergunte ao administrador qual dos dois vale; o Tutorial 3 cobre o caminho do SSO.

Claude Code

Na primeira execução o Claude Code pergunta se quer usar a chave da variável em vez de fazer login na Anthropic. Confirme uma vez. A alternativa ANTHROPIC_AUTH_TOKEN também funciona, porque o gateway aceita Authorization: Bearer sk-atlas-....

Modelo: Se a empresa quiser fixar o modelo, use a regra global de roteamento do Tutorial 1. A variável ANTHROPIC_MODEL no bloco env também funciona, mas a regra no gateway vale para todos os clientes de uma vez e não depende de ninguém respeitar a variável.

  • Sistema: macOS | Caminho: /Library/Application Support/ClaudeCode/managed-settings.json
  • Sistema: Linux e WSL | Caminho: /etc/claude-code/managed-settings.json
  • Sistema: Windows | Caminho: C:\ProgramData\ClaudeCode\managed-settings.json
  • env injeta as variáveis em toda sessão do Claude Code, sem depender do shell da pessoa.
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC desliga telemetria, verificação de atualização e outras chamadas que o firewall bloquearia e que gerariam ruído de erro.
  • apiKeyHelper é um script que imprime a credencial. O Claude Code o executa e renova o valor por TTL. É aqui que a chave fica invisível.

O mínimo: duas variáveis

O Claude Code monta ANTHROPIC_BASE_URL + /v1/messages, que cai em /anthropic/v1/messages. Essa rota já responde messages com streaming, count_tokens e models, que é tudo que ele usa. A chave vai no header x-api-key e o gateway a reconhece como virtual pelo prefixo. O modelo claude-sonnet-5 sem prefixo é resolvido pelo catálogo.

Para o desenvolvedor não configurar nada

O Claude Code lê um arquivo de configuração gerenciada que a organização controla e o usuário não consegue sobrescrever. O MDM ou o script de onboarding grava este arquivo:

O script de credencial

A opção A lê a chave virtual que o provisionamento deixou na máquina. A opção B, para empresas com SSO no terminal, pede o token pessoal à CLI atlasberg. As duas imprimem uma linha e saem.

O que o desenvolvedor vê

Abre o terminal, roda claude, funciona. Se tentar usar a chave pessoal ou apontar para a Anthropic direto, o firewall corta. Se estourar o orçamento, o corte suave degrada para o modelo mais barato permitido em vez de negar.

# base URL aponta para a rota drop-in Anthropic do gateway
export ANTHROPIC_BASE_URL=https://llm.empresa.com/anthropic
# a chave virtual entra no lugar da chave da Anthropic
export ANTHROPIC_API_KEY=sk-atlas-...
$ claude
Detected a custom API key in your environment (ANTHROPIC_API_KEY).
Do you want to use this API key? › Yes

✓ Connected. Model: claude-sonnet-5
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://llm.empresa.com/anthropic",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  },
  "apiKeyHelper": "/usr/local/bin/atlasberg-credential"
}
#!/bin/sh
# Linux: arquivo gravado pelo onboarding, dono = usuário, modo 0400
if [ -r "$HOME/.config/atlasberg/virtual-key" ]; then
  cat "$HOME/.config/atlasberg/virtual-key"
  exit 0
fi
# macOS: item no Keychain gravado pelo MDM
security find-generic-password -s atlasberg-virtual-key -w 2>/dev/null
{
  "env": { "ANTHROPIC_BASE_URL": "https://llm.empresa.com/anthropic" },
  "apiKeyHelper": "atlasberg key-helper"
}

Cursor

Em Settings > Models, cole a chave virtual no campo de API key da OpenAI e marque Override OpenAI Base URL com:

A rota /cursor existe porque o Cursor envia um payload híbrido de Responses API para o endpoint de chat completions. O gateway converte nos dois sentidos. Adicione os modelos que o time pode usar na lista de modelos customizados, com o mesmo nome que está no catálogo.

Atenção: Em várias configurações o Cursor faz a chamada a partir dos servidores dele, não da máquina do usuário. Nesse caso llm.empresa.com precisa ser alcançável da internet, e a chave virtual passa a ser a única proteção. Confirme o comportamento na documentação da versão em uso antes de expor o gateway.

https://llm.empresa.com/cursor/v1

Codex CLI, Continue, Cline, Aider e qualquer SDK OpenAI

Para pedir um modelo de outro provedor pela rota OpenAI, use o prefixo: anthropic/claude-sonnet-5.

export OPENAI_BASE_URL=https://llm.empresa.com/openai/v1
export OPENAI_API_KEY=sk-atlas-...

SDK Anthropic

from anthropic import Anthropic
client = Anthropic(
    base_url="https://llm.empresa.com/anthropic",
    api_key="sk-atlas-...",
)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
  baseURL: "https://llm.empresa.com/anthropic",
  apiKey: "sk-atlas-...",
});

Gemini CLI e SDK Google

export GOOGLE_GEMINI_BASE_URL=https://llm.empresa.com/genai
export GEMINI_API_KEY=sk-atlas-...

API unificada

Aplicações internas podem usar o formato OpenAI na raiz e escolher o provedor pelo prefixo do modelo. Um único cliente, todos os provedores:

curl -s https://llm.empresa.com/v1/chat/completions \
  -H "Authorization: Bearer sk-atlas-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-sonnet-5","messages":[{"role":"user","content":"Olá"}]}'

Referência rápida

  • Cliente: Claude Code | Base URL: ANTHROPIC_BASE_URL=https://llm.empresa.com/anthropic | Credencial: ANTHROPIC_API_KEY ou apiKeyHelper
  • Cliente: SDK Anthropic | Base URL: base_url=https://llm.empresa.com/anthropic | Credencial: api_key
  • Cliente: Cursor | Base URL: https://llm.empresa.com/cursor/v1 | Credencial: Campo OpenAI API Key
  • Cliente: Codex, SDK OpenAI, Continue, Cline, Aider | Base URL: OPENAI_BASE_URL=https://llm.empresa.com/openai/v1 | Credencial: OPENAI_API_KEY
  • Cliente: Gemini CLI, SDK Google | Base URL: GOOGLE_GEMINI_BASE_URL=https://llm.empresa.com/genai | Credencial: GEMINI_API_KEY
  • Cliente: Aplicações internas | Base URL: https://llm.empresa.com/v1 | Credencial: Authorization: Bearer
  • Sintoma: 401 virtual_key_required | Causa: A ferramenta não mandou chave, ou mandou num header que o gateway não lê | Correção: Conferir a variável; a chave precisa ter o prefixo sk-atlas-
  • Sintoma: 401 virtual_key_not_found | Causa: Chave revogada, expirada ou digitada errado | Correção: Pedir ao administrador que reemita
  • Sintoma: 403 modelo não permitido | Causa: A chave não tem esse modelo na lista de permitidos | Correção: Pedir para adicionar o modelo à chave ou ao time
  • Sintoma: Erro de certificado | Causa: CA corporativa não vista pelo Node | Correção: NODE_EXTRA_CA_CERTS apontando para o bundle PEM da CA
  • Sintoma: Claude Code lento para abrir | Causa: Telemetria batendo no firewall | Correção: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

Se algo falhar

Faça tudo com um agente de IA

Se preferir delegar, cole o prompt abaixo no Claude Code ou em outro agente de IA com acesso ao terminal. Ele foi escrito para perguntar tudo o que precisa antes de mexer em qualquer coisa, mostrar um plano, esperar a sua confirmação e só então executar. Ele nunca pede o valor de uma chave de provedor e nunca grava segredo em arquivo do repositório.

Próximo: entre pelo terminal com o SSO

Troque a chave virtual por um token pessoal emitido depois do login corporativo. Nenhuma chave no laptop.

Anterior: todo tráfego de IA pelo gateway

Como a infraestrutura publica o gateway, bloqueia a saída direta e cria times e chaves.

Você vai configurar a minha estação de trabalho para que as minhas ferramentas de IA passem pelo gateway Atlasberg da empresa, seguindo https://atlasberg.com/docs/tutoriais/conectar-claude-code. Não invente nada: pergunte o que falta.

Antes de mexer em qualquer arquivo, me pergunte, uma pergunta por vez:
1. A URL do gateway (exemplo: https://llm.empresa.com).
2. Como eu me autentico: (a) tenho uma chave virtual que começa com sk-atlas-, ou (b) a empresa usa login único pelo terminal com a CLI atlasberg. Se for (b), pare aqui e me mande para o tutorial https://atlasberg.com/docs/tutoriais/login-por-dispositivo, que tem o prompt certo.
3. Se for chave: onde ela está. Num arquivo, no Keychain, ou vou colar agora. Se eu colar, grave em ~/.config/atlasberg/virtual-key com permissão 0400, não mostre a chave de volta e não a coloque em nenhum outro arquivo.
4. Quais ferramentas eu uso: Claude Code, Cursor, Codex CLI, Continue, Cline, Aider, Gemini CLI, SDK da Anthropic, SDK da OpenAI, SDK do Google.
5. Meu sistema (macOS, Linux, WSL ou Windows) e meu shell (bash, zsh, fish, PowerShell).
6. Se esta é a minha máquina pessoal de trabalho (configurar no meu perfil de shell) ou se estou preparando uma configuração gerenciada pela empresa para todas as estações (arquivo managed-settings.json do Claude Code, que exige privilégio de administrador).
7. Se o gateway usa certificado de CA corporativa e, se sim, o caminho do PEM da CA.

Depois, mostre o que vai escrever e onde, e peça confirmação. Só então faça:
a) Claude Code: exporte ANTHROPIC_BASE_URL=<gateway>/anthropic. Para a chave, crie o script /usr/local/bin/atlasberg-credential (ou ~/.local/bin/atlasberg-credential sem sudo) que imprime a chave lendo ~/.config/atlasberg/virtual-key ou o Keychain, e aponte apiKeyHelper para ele. Na configuração gerenciada, grave o arquivo no caminho do sistema (macOS: /Library/Application Support/ClaudeCode/managed-settings.json; Linux e WSL: /etc/claude-code/managed-settings.json; Windows: C:\ProgramData\ClaudeCode\managed-settings.json) com o bloco env contendo ANTHROPIC_BASE_URL e CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 e o apiKeyHelper. Na máquina pessoal, ponha as variáveis no meu perfil de shell e o apiKeyHelper em ~/.claude/settings.json.
b) Cursor: me diga exatamente o que colar em Settings > Models: a chave no campo OpenAI API Key e <gateway>/cursor/v1 em Override OpenAI Base URL. Isso é manual, não tente automatizar.
c) Codex, Continue, Cline, Aider e SDK OpenAI: OPENAI_BASE_URL=<gateway>/openai/v1 e OPENAI_API_KEY=<chave>.
d) Gemini CLI e SDK Google: GOOGLE_GEMINI_BASE_URL=<gateway>/genai e GEMINI_API_KEY=<chave>.
e) SDK Anthropic: mostre o trecho de código com base_url=<gateway>/anthropic.
f) Se a CA for corporativa: NODE_EXTRA_CA_CERTS apontando para o PEM, no mesmo lugar das outras variáveis.
g) Teste, mostrando só o resumo: GET <gateway>/health; POST <gateway>/anthropic/v1/messages com a chave no header x-api-key, anthropic-version 2023-06-01, modelo claude-sonnet-5 e max_tokens 32; GET <gateway>/api/governance/virtual-keys/quota com x-atlasberg-vk. Se der 401 virtual_key_required, 401 virtual_key_not_found, 403 de modelo, 400 de provedor ou erro de certificado, explique o que significa segundo a tabela do tutorial e o que eu preciso pedir ao administrador.
h) Abra uma nova sessão de shell e confirme que as variáveis estão carregadas. Diga que na primeira execução do Claude Code ele vai perguntar se quer usar a chave da variável, e que a resposta é sim.

Regras: nunca imprima a chave completa; ao citá-la, use sk-atlas-... Não configure chave direta de provedor. Não desabilite a verificação de certificado.

Sobre a Atlasberg Platform

A Atlasberg Platform é a camada de controle entre uma empresa e todos os modelos de IA: cada requisição é autenticada com uma chave virtual, filtrada por política e DLP, roteada para o provedor certo e gravada numa trilha de auditoria encadeada por hash. Expõe uma API compatível com a OpenAI, então as aplicações só trocam a URL base.

O mesmo artefato roda na Atlasberg Cloud, na sua VPC, on-premises ou totalmente air-gapped, e é cobrado por capacidade e módulos, nunca por assento.

Esta página faz parte da documentação oficial. Para falar com o time de engenharia, escreva para [email protected] ou use https://atlasberg.com/pt-br/contato. A resposta vem em até um dia útil.

Agentes: esta página também está disponível em Markdown em /pt-br/docs/tutoriais/conectar-claude-code.md, ou pedindo esta URL com o cabeçalho Accept: text/markdown. Índice de tudo: /llms.txt.