Esta página é uma tradução da documentação em inglês. Comandos, identificadores e exemplos permanecem iguais. Runtime 7.24.4 · SDK 2.6.7. Original em inglês
Modo sandbox
Status: Ativo Escopo: estado atual Última revisão: 2026-08-23 Responsável: ax-code runtime
O AX Code inclui um sandbox de execução embutido que pode restringir o que o agente de IA faz no seu sistema. Por padrão, o AX Code inicia em acesso total, com o sandbox desligado, então gravações no sistema de arquivos e acesso à rede ficam sem restrição. Ative workspace-write ou read-only antes de trabalhar com repositórios não confiáveis ou de executar tarefas sem supervisão.
Aviso de segurança:
full-accessnão é uma fronteira de segurança. O agente pode modificar arquivos fora do workspace, gravar.git/e.ax-code/, executar comandos de shell sem restrição e acessar a rede.
Início rápido
Alterne o sandbox pela TUI:
- Digite
/sandboxno prompt, ou - Pressione
Ctrl+Pe busque “sandbox”
A barra de status mostra o estado atual:
- sandbox ligado (verde) — agente confinado ao workspace
- sandbox desligado (vermelho) — sem restrições
O ajuste persiste entre sessões em ax-code.json.
O que muda
| Capacidade | Sandbox desligado | Sandbox ligado |
|---|---|---|
| Gravações de arquivo dentro do workspace | Permitido | Permitido |
| Gravações de arquivo fora do workspace | Permitido | Bloqueado |
Gravações em .git/ |
Permitido | Bloqueado |
Gravações em .ax-code/ |
Permitido | Bloqueado |
| Comandos bash | Sem restrição | Somente o workspace |
Bash com alvo em .git/, .ax-code/ |
Permitido | Bloqueado |
| Bash com alvo fora do workspace | Permitido | Bloqueado |
| Acesso à rede (webfetch, websearch) | Permitido | Bloqueado |
| Clientes de rede no bash (curl, wget, …) | Permitido | Bloqueado |
| Operações de leitura (read, glob, grep) | Sem restrição | Sem restrição |
Configuração
Fonte da verdade
Esta página resume o comportamento visto pelo usuário. Quando o comportamento mudar, confira a documentação contra:
packages/ax-code/src/isolation/index.tspara resolução de modo, caminhos protegidos, checagens de rede, de gravação e de bash, eIsolationDeniedError.packages/ax-code/src/config/schema.tspara a forma da configuração, os padrões e as descrições.packages/ax-code/src/server/routes/isolation.tspara o comportamento do interruptor em runtime e a persistência.packages/ax-code/test/isolation/isolation.test.tsepackages/ax-code/test/tool/bash.test.tspara o comportamento esperado de imposição.
Mantenha as afirmações duplicadas no README da raiz curtas e aponte para cá nos detalhes.
Alternar pela TUI
Use /sandbox ou a paleta de comandos (Ctrl+P → “Ligar ou desligar o sandbox”). A mudança vale na hora e é salva no ax-code.json do projeto.
Marca da CLI
ax-code --sandbox workspace-write # sandbox on
ax-code --sandbox full-access # sandbox off
ax-code --sandbox read-only # strictest: blocks all mutations
Variável de ambiente
AX_CODE_ISOLATION_MODE=workspace-write ax-code
Arquivo de configuração
Em ax-code.json:
{
"isolation": {
"mode": "workspace-write",
"network": false
}
}
Precedência
Marca da CLI > variável de ambiente > arquivo de configuração > padrão (full-access)
Quando uma substituição da CLI ou do ambiente está ativa, a TUI informa esse modo efetivo. Um interruptor /sandbox pode salvar a preferência do projeto, mas a substituição de precedência mais alta permanece ativa até ser removida (em geral, na reinicialização).
Modos de isolamento
| Modo | Descrição |
|---|---|
workspace-write |
Gravações confinadas ao workspace. Rede desativada. Caminhos protegidos impostos. Mostrado como “sandbox ligado”. |
full-access |
Sem restrições. Mostrado como “sandbox desligado”. |
read-only |
Todas as mutações bloqueadas. Sem bash. Sem gravações. Sem rede. |
Caminhos protegidos
No modo workspace-write, estes caminhos ficam sempre protegidos contra gravação:
.git/— evita corrupção acidental do estado do git.ax-code/— evita adulteração de configuração e de plugin
Acrescente caminhos protegidos personalizados na configuração:
{
"isolation": {
"mode": "workspace-write",
"protected": ["secrets", "credentials"]
}
}
Acesso à rede
A rede fica desativada por padrão nos modos workspace-write e read-only. Ferramentas afetadas:
webfetch— bloqueadawebsearch— bloqueadacodesearch— bloqueadabash— clientes só de rede (curl,wget,nc/ncat/netcat,telnet,ftp,tftp,scp,sftp,dig,nslookup,host) são bloqueados
Limitação: o bloqueio de rede em
bashé da camada da aplicação e cobre os clientes de rede dedicados acima. Ele não intercepta ferramentas de uso duplo que também funcionam offline (git,npm/pnpm/yarn,pip,go, interpretadores de linguagem comopython/node), porque as invocações offline delas não podem ser distinguidas de forma estática, e bloqueá-las quebraria fluxos comuns. Um isolamento de rede verdadeiro e exaustivo exige controles no nível do sistema operacional, que este sandbox não fornece. Quando um cliente negado é atingido, o agente pede uma elevação única.
Para permitir a rede e manter as restrições de gravação:
{
"isolation": {
"mode": "workspace-write",
"network": true
}
}
Backend de isolamento (aplicação e sistema operacional)
| Backend | Configuração / ambiente | Comportamento |
|---|---|---|
app |
"backend": "app" |
Somente checagens portáteis na camada de ferramenta |
os |
"backend": "os" / AX_CODE_ISOLATION_BACKEND=os |
Checagens da aplicação mais sandbox do kernel para o bash; erro se faltarem ferramentas do sistema |
auto (padrão) |
"backend": "auto", não definido, ou AX_CODE_ISOLATION_BACKEND=auto |
Prefere o envoltório de bash do sistema; recua para só a aplicação |
macOS: perfis Seatbelt por sandbox-exec (gravação limitada ao workspace ou à worktree, rede negada quando network: false).
Linux: bubblewrap (bwrap) quando instalado (--unshare-net quando a rede está desativada, workspace montado com ligação em leitura e gravação).
Windows: somente a camada da aplicação, hoje.
{
"isolation": {
"mode": "workspace-write",
"network": false,
"backend": "auto"
}
}
Veja SECURITY.md para o modelo de ameaça.
Permissões e hooks controlados pelo repositório
Arquivos de projeto não são confiáveis por padrão. Regras de permissão em ax-code.json, .ax-code/policy.json e definições de agente ou de modo do projeto podem apertar o acesso com deny, mas concessões allow/ask controladas pelo repositório são ignoradas. Comandos do projeto não podem ativar expansão de shell. .ax-code/hooks.json, .ax-code/plugin/ e plugins configurados pelo projeto não são executados.
Configuração de projeto não confiável também não pode selecionar um shell personalizado, um LSP ou formatador executável, um pacote de provedor ou endpoint de API, variáveis de ambiente de credencial de provedor, uma origem externa de skill ou um caminho de instrução fora da worktree. Caminhos relativos seguros de instrução e substituições embutidas não executáveis continuam disponíveis. Servidores MCP usam um fluxo separado de aprovação com impressão digital, descrito em Integrações MCP.
Depois de revisar a configuração controlada pelo repositório, o usuário pode optar, fora do repositório, pelo processo atual:
AX_CODE_TRUST_PROJECT_CONFIG=1 ax-code
O interruptor só de ambiente impede que um checkout se declare confiável.
Como a imposição funciona
A imposição do sandbox é sempre da camada da aplicação, conferida em cada invocação de ferramenta. Quando backend é os ou auto e a plataforma aceita, o bash é adicionalmente envolvido num sandbox do kernel.
| Ferramenta | Checagem |
|---|---|
bash |
O diretório de trabalho e todos os caminhos resolvidos precisam estar dentro do workspace; clientes só de rede são bloqueados quando a rede está desativada; envoltório opcional do sistema |
edit |
O arquivo alvo precisa estar dentro do workspace e não estar protegido |
write |
O arquivo alvo precisa estar dentro do workspace e não estar protegido |
apply_patch |
Todos os arquivos alvo precisam estar dentro do workspace e não estar protegidos |
webfetch |
O acesso à rede precisa estar ativado |
websearch |
O acesso à rede precisa estar ativado |
codesearch |
O acesso à rede precisa estar ativado |
Quando uma ferramenta viola o isolamento, ela lança um IsolationDeniedError com uma mensagem clara que explica o que foi bloqueado e por quê.