Por que a CLI para o Claude Code
O Claude Code tem acesso a shell, então ele deve controlar o FirstSales pela CLI, não por HTTP puro. A CLI centraliza a autenticação, retorna JSON estável que o agente consegue parsear, cuida dos headers de idempotência e força confirmação em operações destrutivas: tudo que você, de outra forma, teria que instruir o agente a fazer corretamente toda vez.
Regra geral da documentação: agentes devem preferir a CLI quando há acesso a shell.
Instale e exponha a chave
Instale a CLI uma vez, e passe a chave ao Claude Code pelo ambiente para que ela nunca apareça em um prompt ou transcrição:
npm install -g @firstsales.io/cli export FIRSTSALES_API_KEY="fs-key-..." # definida no seu shell, não no chatDê ao agente suas regras de operação
Cole um contrato de operação curto no Claude Code (ou em um arquivo de regras do projeto) para que ele se comporte com segurança:
- Comece toda sessão com
firstsales whoami --json; confirme org e workspace antes de agir. - Inspecione primeiro, mute deliberadamente, verifique depois.
- Use
--idempotency-keyem qualquer criação que possa ser repetida. - Use
--confirmsomente para uma exclusão intencional pedida pelo usuário. - Nunca imprima chaves de API cruas.
- Comece toda sessão com
Exploração somente leitura é sempre segura
Encoraje o agente a explorar livremente com comandos list/get: eles não conseguem danificar nada:
firstsales campaigns list --org ORG_ID --workspace WS_ID --json firstsales contacts list --org ORG_ID --workspace WS_ID --json firstsales billing overview --org ORG_ID --jsonMutações: pré-visualizar, agir, verificar
Para qualquer coisa que escreve, faça o Claude Code seguir o ciclo do início ao fim:
--dry-run, depois a chamada real com uma chave de idempotência, depois uma releitura:firstsales contacts create --org ORG_ID --workspace WS_ID \ --data '{"email":"[email protected]","first_name":"Sam"}' --dry-run firstsales contacts create --org ORG_ID --workspace WS_ID \ --data '{"email":"[email protected]","first_name":"Sam"}' \ --idempotency-key sam-acme-2026-01 firstsales contacts list --org ORG_ID --workspace WS_ID --jsonAprove ou rejeite rascunhos de IA pelo terminal
Um ciclo útil no Claude Code: revisar respostas escritas por IA pendentes e agir sobre elas sem abrir o app. Liste as threads, leia uma, depois aprove ou rejeite o rascunho:
firstsales inbox threads --org ORG_ID --workspace WS_ID firstsales inbox thread --org ORG_ID --workspace WS_ID --thread THREAD_ID firstsales inbox approve-draft --org ORG_ID --workspace WS_ID \ --email EMAIL_ID --idempotency-key approve-EMAIL_IDRespeite a superfície pública
Instrua o agente a permanecer nos comandos públicos da CLI. Se um comando retornar
unsupported_operation, ele deve parar e reportar: não tentar chamar rotas privadas do app, callbacks de provedores, pixels de rastreamento, handlers de descadastro ou endpoints de cron internos para forçar o resultado.
Dicas de especialista
Coloque as regras de operação em um arquivo de regras do projeto
Em vez de colar o contrato de segurança de novo a cada sessão, coloque-o nas regras do projeto do Claude Code para que toda execução comece com whoami e o ciclo inspecionar-mutar-verificar.
Chave no ambiente, nunca no chat
Exporte FIRSTSALES_API_KEY no shell em que o Claude Code roda. Se a chave está em um prompt, ela está na transcrição: a CLI a mantém fora da saída, não a coloque de volta.
Deixe ele ler livremente, controle as escritas
Comandos list/get/analytics são seguros para rodar sem supervisão. Reserve sua revisão para qualquer coisa com create/update/delete ou --confirm.
unsupported_operation significa parar
Treine o agente para tratar unsupported_operation como um muro, não um quebra-cabeça. A CLI pública é toda a superfície permitida; não há gambiarra que valha o risco.
Perguntas frequentes
O Claude Code deve usar a CLI ou a API?
A CLI. Como o Claude Code tem acesso a shell, a CLI é preferida: ela centraliza a autenticação, emite JSON estável e reforça idempotência e confirmação de operações destrutivas, para que o agente não precise reimplementar isso.
Como mantenho minha chave de API fora da transcrição?
Exporte FIRSTSALES_API_KEY no shell antes de iniciar o Claude Code, e instrua-o a nunca imprimir chaves cruas. A CLI lê a variável de ambiente e nunca a ecoa na saída.
Qual é o fluxo seguro para mudanças?
Verifique a identidade com whoami, confirme org/workspace, inspecione o estado atual, faça a mudança mínima com --dry-run e depois --idempotency-key, use --confirm só para exclusões pretendidas, e releia para validar.
Ele consegue gerenciar a caixa de entrada?
Sim: inbox threads, inbox thread e inbox approve-draft / reject-draft permitem que o Claude Code triem e aja sobre respostas escritas por IA pelo terminal.
O que fazer se um comando não é suportado?
Se a CLI retornar unsupported_operation, o agente deve parar e reportar. Ele não deve recorrer a rotas privadas do app, callbacks, pixels ou endpoints de cron: esses são proibidos e vão quebrar.
Como evito exclusões acidentais?
Comandos destrutivos exigem --confirm. Enquanto o agente só adicionar --confirm para exclusões explicitamente pedidas pelo usuário, uma exclusão acidental não pode acontecer silenciosamente.