chatcli acp é o servidor ACP do ChatCLI. Tudo que você configurou no ChatCLI — providers, modelos, memória, contextos, skills, plugins, servidores MCP — passa a dirigir o chat de IA da sua IDE.
O que a IDE renderiza nos runs de agent/coder é totalmente estruturado — não um transcript de terminal em stream:
- Raciocínio — chega como thought chunks nativos (colapsáveis na maioria dos clientes).
- Tool calls — cada ação é uma tool call de primeira classe com título humano (“Reading: main.go”), kind semântico (read, edit, execute, search…), status ao vivo e os arquivos tocados. Leituras bem-sucedidas mostram qual arquivo foi lido — nunca um despejo do conteúdo no chat.
- Plano — a lista de tarefas do coder vira um painel de plano ao vivo, marcado conforme o agente progride.
- Resposta final — prosa limpa do assistente, renderizada como markdown pela IDE.
- Dialogs de permissão — comandos perigosos pausam o run e disparam o dialog nativo Allow/Reject da IDE.
Início rápido
IDEs JetBrains (IntelliJ IDEA, GoLand, WebStorm, …)
O AI Assistant da JetBrains hospeda agentes ACP customizados nativamente (macOS e Linux; agentes ACP não exigem assinatura de IA).1
Abra a configuração de agente customizado
Na tool window AI Chat, abra o dropdown de agentes e escolha Add Custom Agent. A IDE cria e abre o
~/.jetbrains/acp.json.2
Registre o ChatCLI
~/.jetbrains/acp.json
commandprecisa ser um caminho absoluto (which chatclipara descobrir).envé opcional — com ele você fixa provider/modelo para a IDE independentemente das sessões do terminal; sem ele, o ChatCLI sobe com a resolução normal de.env/ambiente.
3
Selecione o ChatCLI e converse
De volta ao AI Chat, escolha ChatCLI no dropdown de agentes e mande um prompt. Agentes customizados aparecem com um ícone próprio.
use_custom_mcp / use_idea_mcp controlam quais servidores MCP a IDE oferece aos agentes. O ChatCLI traz a própria configuração de cliente MCP (~/.chatcli/mcp_servers.json) de qualquer forma — as tools que você configurou no ChatCLI continuam funcionando dentro da IDE.Zed
Adicione o ChatCLI emagent_servers no settings.json do Zed:
Modos de sessão
Toda sessão ACP roda em um de três modos, anunciados ao cliente nosession/new e trocáveis a qualquer momento:
Troque de modo pelo seletor da IDE, ou simplesmente digite o comando no prompt:
current_mode_update, então o seletor da IDE sempre reflete a realidade.
Slash commands na IDE
Digite/ na caixa de prompt: a IDE autocompleta a superfície de comandos do ChatCLI (anunciada via available_commands_update). Três grupos:
Trocas de modo — /chat, /agent, /coder (e /run como alias de agent).
Comandos headless — executam de verdade, com o output devolvido no chat:
Todo o resto — comandos que precisam de um terminal vivo (
/menu, /gateway, /schedule, /auth, …) respondem com uma mensagem clara de “não disponível pela conexão da IDE” em vez de falhar em silêncio.
Um prompt que apenas começa com barra — um path como
/usr/local/bin explica isso, uma palavra com typo — não é sequestrado: tokens desconhecidos fluem para o modelo como texto normal do usuário.Dialogs de permissão
Servidores de agente unattended historicamente enfrentam uma escolha dura: auto-aprovar tudo ou bloquear tudo. O ACP tem uma resposta melhor —session/request_permission — e o ChatCLI a usa:
- Quando o coder quer executar um comando classificado como perigoso (deletes recursivos, force push, escalação de privilégio…), o run pausa e a IDE mostra o dialog nativo de aprovação com Allow once / Reject once.
- Qualquer coisa que não seja um Allow explícito — reject, dialog fechado, crash do cliente, timeout — nega o comando. O agente vê a recusa in-band e replaneja.
- O mesmo gate cobre blocos shell propostos pelo agente no modo agent.
agent_task do MCP) recebem o comportamento estrito: comandos perigosos são recusados.
Seus servidores MCP funcionam aqui também
O processo ACP é um boot completo do ChatCLI — incluindo o cliente MCP. Se o~/.chatcli/mcp_servers.json existe, todos os servidores MCP configurados são conectados no startup e as tools deles entram na caixa de ferramentas do agente, exatamente como no terminal:
- Peça ao agente algo que precise de uma tool MCP (“veja as issues abertas do Jira”, “consulte o banco de staging”) e ele chama a tool do servidor conectado autonomamente. Na IDE, a chamada renderiza como uma tool call estruturada nativa igual a qualquer built-in.
- Hot reload — editar o
mcp_servers.jsonreconecta servidores ao vivo; sem reiniciar IDE nem agente./mcpna caixa de prompt mostra status de conexão e tools. - Servidores remotos com OAuth precisam ser autorizados antes (rode
@mcp-loginno terminal uma vez; os tokens persistem no keychain).
As conexões são estabelecidas de forma assíncrona no boot: um prompt enviado nos primeiríssimos segundos pode ainda não enxergar as tools de um servidor lento — elas entram no catálogo assim que a conexão completa.Uma diferença conceitual em relação ao
chatcli mcp-server: o ACP não tem lista de tools voltada ao cliente, então a IDE nunca invoca tools MCP diretamente — o agente as usa por você. Invocação direta de tool (hub passthrough) é recurso do modo mcp-server.Por baixo do capô (para integradores)
O ChatCLI implementa o ACP protocol version 1. Métodos:
Kinds de
session/update emitidos: agent_thought_chunk, agent_message_chunk, tool_call, tool_call_update, plan, current_mode_update, available_commands_update. Tool calls carregam kind (read/edit/delete/move/search/execute/think/fetch/other), status, rawInput, locations (paths para follow-along) e conteúdo limitado para exibição — o modelo sempre recebe o output completo; a visão do chat recebe um resumo limitado.
Menções de arquivo da IDE funcionam nos dois sentidos: blocos resource_link chegam como referências que as ferramentas do agente abrem sozinhas, e blocos resource (conteúdo embutido) são injetados como contexto anexado.
Notas operacionais
- Um run por vez — runs de agent/coder serializam no processo (compartilham o estado do engine). O prompt de uma segunda sessão espera o run atual terminar; um segundo prompt na mesma sessão é rejeitado enquanto há um em voo.
- Ambiente — o processo ACP é um boot normal do ChatCLI:
.env, logins OAuth no keychain, catálogos de provider, config de cliente MCP e skills resolvem exatamente como no terminal. - Sessões são in-process — sessões da IDE mapeiam para o histórico do processo.
/newsessione/compactagem sobre ele;session/loadainda não é implementado. - Logs — stdout é o protocolo; diagnóstico vai para o arquivo de log padrão do ChatCLI. Coloque
LOG_LEVEL=debugno blocoenvdo agente ao investigar.
Troubleshooting
Veja também
- MCP Server — o subcomando irmão: a superfície completa do ChatCLI como tools MCP
- Coder Plugin — o que o engine do coder consegue fazer
- Coder Security — a classificação de comandos perigosos por trás dos dialogs de permissão
- Referência de Comandos — a superfície completa de slash commands
- Variáveis de Ambiente — knobs de provider/modelo/segurança