Claude Code ou Codex: qual agente te dá mais controle antes de mexer no código?

Claude Code vs Codex: comparação dos modos de permissão antes de mexer no código
Resposta rápida

Na comparação Claude Code vs Codex, a diferença não é só de nome dos modos: é de arquitetura. O Claude Code te dá uma escada de modos de permissão (plan, default, acceptEdits, auto mode e bypassPermissions), com regras deny e ask que valem acima do modo escolhido. O Codex separa a decisão em dois eixos independentes: approval_policy (quando ele pergunta) e sandbox_mode (onde ele pode escrever). Os dois já oferecem revisão feita por outro modelo no lugar da sua: auto mode de um lado, auto-review do outro. Este post compara o que cada um pede e o que roda direto 🙂

Fala aí, beleza? Agente de IA com terminal aberto no repositório de produção é o tipo de coisa que tira o sono de quem já viu um git reset --hard mandar duas horas de trabalho pro além

O problema que os dois resolvem é o mesmo: onde fica o freio antes da ação

A arquitetura é que muda. O Claude Code organiza tudo em modos de permissão, uma escada do mais travado ao mais solto. O Codex separa em dois eixos independentes: política de aprovação de um lado, modo de sandbox do outro

Então aqui a comparação Claude Code vs Codex é bem específica, nada de vencedor genérico: o que cada agente PERGUNTA antes de agir, e o que ele roda direto sem te consultar

Claude Code x Codex: o que cada um pede antes de agir

Situação Claude Code Codex
Somente leitura modo plan: lê arquivos, roda comando pra explorar e escreve um plano, edições bloqueadas até você aprovar preset Read Only (:read-only): leitura livre, editar, rodar comando e acessar rede exigem aprovação
Intermediário acceptEdits: aprova edições de arquivo e comandos comuns de filesystem (mkdir, touch, mv, cp) preset Auto: --sandbox workspace-write --ask-for-approval on-request
Revisão automática auto mode: classificador em Sonnet 4.6 avalia cada ação antes da execução auto-review: approvals_reviewer = "auto_review", um revisor separado decide e devolve justificativa
Sem freio bypassPermissions, só aparece por flag explícita Full Access (:danger-full-access), escrita em qualquer lugar
Rede Bash em sandbox sai por proxy que restringe domínios e pede confirmação pra domínio novo no workspace-write a rede vem desligada, liga com network_access = true
Onde persiste a config defaultMode nos arquivos de settings approval_policy e sandbox_mode no config.toml
Troca durante a sessão Shift+Tab /permissions e /plan
SO do sandbox macOS, Linux e WSL2, sem Windows nativo Seatbelt no macOS, bubblewrap e seccomp no Linux e WSL (Landlock em caminhos de compatibilidade), mecanismo próprio no Windows

Os modos do Claude Code, do mais travado ao mais solto

A documentação de modos de permissão lista os modos disponíveis assim: default, acceptEdits, plan, auto, dontAsk e bypassPermissions

Bora do mais travado pro mais solto

plan: o agente pensa e não toca

O plan é somente leitura

Ele lê arquivos, roda comando pra explorar o projeto e escreve um plano, mas as edições ficam bloqueadas até você aprovar o plano

É o modo de "me conta o que você faria" antes de qualquer linha mudar de lugar

default: pergunta antes de quase tudo

No default (o Manual) o agente para e pergunta antes da maioria das ações que mexem em alguma coisa: editar arquivo, rodar comando de shell ou acessar a rede

Leitura é livre

É o modo mais chato de usar e o mais previsível de auditar, os dois ao mesmo tempo

acceptEdits: edita sozinho, para no arriscado

O acceptEdits aprova automaticamente edições de arquivo e comandos comuns de sistema de arquivos, tipo mkdir, touch, mv e cp

Leitura também segue livre

Mas ele continua parando no que é mais arriscado, então não é carta branca

auto mode: quem revisa não é você

Aqui muda o jogo

No auto mode quem avalia as ações é um segundo modelo, um classificador rodando em Sonnet 4.6, que analisa cada ação antes da execução e bloqueia o que for irreversível, destrutivo ou direcionado pra fora do seu ambiente

Tem ainda uma sonda server-side de prompt injection que varre as saídas de ferramenta antes delas entrarem no contexto

E se liga nisso: desde 14 de agosto o auto mode virou o modo de permissão padrão de novas sessões nos planos Pro, Max e Team. Quem já tinha definido um modo padrão manteve o seu, e padrão gerenciado pela organização não mudou

O que o classificador bloqueia por padrão dá uma boa ideia da régua dele:

  • operações de git que descartariam trabalho não commitado: git reset --hard, git checkout -- ., git restore ., git clean -fd, git stash drop e git stash clear
  • git commit --amend quando o commit em HEAD não foi criado na sessão ou já foi enviado
  • commit ou push que mandaria segredo ou dado sensível pra fora do repositório, incluindo workflow de CI ou config de deploy que entrega segredo a um destino novo, script que lê cofre de segredos e envia dados pra fora, e mudança de config que amplia o que o deploy publica

Ou seja: o freio não é sobre "comando perigoso", é sobre perda irreversível e coisa saindo do seu ambiente

bypassPermissions: pula os prompts, mas não pula tudo

Esse pula os prompts de permissão, inclusive pra escrita em caminhos protegidos como .git e .claude

E ele nem aparece de graça: só depois de iniciar com --permission-mode bypassPermissions, --dangerously-skip-permissions ou --allow-dangerously-skip-permissions

A própria doc recomenda usar isso só em ambiente isolado, container ou VM

Agora, "sem prompt" não é o mesmo que "sem nenhuma trava": regras deny e ask continuam valendo aqui, e um hook PreToolUse que devolve deny bloqueia a ferramenta mesmo nesse modo. Já já a gente detalha essas duas camadas

Mesmo assim, tome cuidado, esse é o modo dos rm -rf da vida 😛

Trocando de modo no meio do caminho

A troca durante a sessão é no Shift+Tab, e o ciclo é definido: a partir do auto, o primeiro toque leva ao default, e depois é default → acceptEdits → plan → default

Dá pra fixar no start também:

claude --permission-mode plan

Ou deixar fixo como padrão nos arquivos de settings:

{ "permissions": { "defaultMode": "acceptEdits" } }

Os dois eixos do Codex: aprovação e sandbox

O Codex não pensa em escada, pensa em duas perguntas separadas

Uma é approval_policy, que aceita untrusted, on-failure, on-request e never

A outra é sandbox_mode, que aceita read-only, workspace-write e danger-full-access

A sacada é essa: "quando ele pergunta" e "onde ele pode escrever" são coisas independentes, e você combina as duas

Os presets prontos

O preset Auto é a combinação --sandbox workspace-write --ask-for-approval on-request

Na prática o Codex lê, edita e roda comando dentro do diretório de trabalho sozinho, e pede aprovação pra editar fora do workspace ou rodar comando que precisa de rede

O Read Only deixa a leitura livre e exige aprovação pra editar, rodar comando e acessar rede

O Full Access corresponde ao sandbox danger-full-access: lê, edita e roda comando com acesso à rede sem aprovação, escrevendo em qualquer lugar

Trocando de preset e planejando antes

A troca é pelo seletor dentro da sessão: digite /permissions e pressione Enter pra escolher o preset

Os modos internos são :read-only, :workspace e :danger-full-access

Tem também o Plan Mode, pra reunir contexto, tirar dúvidas e montar um plano antes de implementar. Alterna com /plan ou Shift+Tab

Onde isso fica salvo

A configuração persistente vive no config.toml, e é lá que entram os dois eixos:

approval_policy = "never"
sandbox_mode = "workspace-write"

Um detalhe que pega muita gente: no workspace-write a rede fica desligada por padrão

Se você precisa dela, tem que habilitar no ~/.codex/config.toml, na seção de configuração do workspace-write, com network_access = true

Pela extensão de IDE dá pra abrir esse arquivo em Codex Settings > Open config.toml

E se você ainda usa --full-auto em script, se liga: ela virou flag de compatibilidade deprecada e imprime aviso. A referência de configuração e a doc de aprovações recomendam a flag explícita, --sandbox workspace-write (ou --sandbox danger-full-access quando você precisa mesmo de acesso amplo)

Quando a revisão deixa de ser humana: auto mode x auto-review

Esse é o ponto mais decisivo pra quem trabalha em código de produção

Nos dois agentes existe hoje a opção de tirar VOCÊ do meio e botar outro modelo pra aprovar

No Claude Code isso é o auto mode: o classificador em Sonnet 4.6 avalia cada ação antes da execução e bloqueia o que for irreversível, destrutivo ou direcionado pra fora do ambiente

No Codex isso é o auto-review. Com approvals_reviewer = "auto_review", um revisor separado decide se a ação roda e devolve uma justificativa. Se negar, o agente principal é instruído a achar um caminho materialmente mais seguro ou parar e perguntar

O que o auto-review olha

Ele avalia exatamente as ações que parariam pra um humano:

  • chamadas de shell ou exec que pedem escalonamento de sandbox
  • requisições de rede bloqueadas pela política atual
  • edições de arquivo fora dos writable roots
  • chamadas MCP ou de apps que exigem aprovação

E o que ele NÃO faz

Aqui mora a confusão mais comum: auto-review é troca de revisor, não concessão de permissão

Ele não amplia writable_roots, não habilita acesso à rede e não enfraquece caminhos protegidos

Só muda como o Codex trata ações que já precisavam de aprovação, beleza?

E quando ele nega, a negativa não é tratada como erro comum de sandbox. A justificativa volta pro agente principal com instrução extra: não perseguir o mesmo resultado por contorno, execução indireta ou burla de política, e só seguir com alternativa materialmente mais segura

Se a revisão automática negou algo recente e você discorda, existe o /approve, que serve pra retentar uma ação negada pela revisão automática. Só pra isso

Camadas extras de trava que só existem em um dos dois

Até aqui parece empate técnico. Não é, porque cada um tem camada que o outro não tem

Do lado do Claude Code

As regras de permissão se sobrepõem ao modo

Regras deny e ask valem em TODOS os modos, inclusive bypassPermissions. Já as regras allow não têm efeito ali, porque naquele modo tudo já está aprovado mesmo

Tem outra camada acima disso: um hook PreToolUse que devolve permissionDecision como deny dentro de hookSpecificOutput bloqueia a ferramenta mesmo em bypassPermissions e mesmo com --dangerously-skip-permissions. As decisões aceitas são allow, deny ou ask

É por isso que lá em cima eu disse que nem o modo mais solto fica sem rede de segurança: ela só sai do prompt e vai pra regra e pro hook

Se você quer entender melhor essa camada, dá pra ir fundo em automatizar bloqueios com hooks antes e depois do agente editar

E tem o Bash em sandbox, com isolamento de sistema de arquivos e de rede aplicado pelo sistema operacional: por padrão os comandos em sandbox só escrevem no diretório de trabalho atual e no diretório temporário da sessão, e a rede sai por um proxy que restringe domínios e pede confirmação pra domínio novo

A Anthropic relata que, no uso interno, o sandbox reduziu os prompts de permissão em 84%

O porém: esse sandbox roda em macOS, Linux e WSL2, sem suporte a Windows nativo. No Windows você precisa rodar o Claude Code dentro de uma distro WSL2

Do lado do Codex

O Codex usa mecanismo nativo de cada sistema operacional pra aplicar o sandbox

No macOS são perfis Seatbelt. No Linux e no WSL, bubblewrap e seccomp, com Landlock em caminhos de compatibilidade. No Windows nativo, o sandbox elevado usa usuários de menor privilégio, limites de permissão de arquivo e regras de firewall, e o não elevado é um fallback com isolamento de rede mais fraco

E o comportamento quando não dá pra aplicar a política é o melhor detalhe: ele recusa rodar, em vez de rodar sem sandbox

Tem ainda um recurso que não tem equivalente do outro lado: marcar um PROJETO como não confiável

Cuidado pra não confundir: aqui untrusted não é o valor de approval_policy que a gente viu lá em cima, é uma marcação de confiança do projeto. Projeto marcado assim pula as camadas .codex/ daquele projeto, incluindo config local, hooks e rules

Isso é ULTRA útil quando você clona repositório de terceiro e não quer que a config dele mande no seu agente

Veredito: qual escolher para código de produção

Não tem vencedor absoluto aqui, tem perfil

Se você quer trava que nenhum modo derruba, o Claude Code leva. Regras deny e ask valem acima do modo escolhido, e o hook PreToolUse com deny bloqueia até nos modos que pulam prompt. É o desenho mais próximo de "essa linha ninguém cruza, nem eu no cansaço das 23h"

Se você quer separar "onde pode escrever" de "quando pergunta", o Codex encaixa melhor. Os dois eixos independentes deixam montar combinações que a escada de modos não expressa, tipo sandbox apertado com aprovação frouxa, ou o contrário

Se você está no Windows nativo, o Codex tem sandbox lá, com mecanismo próprio, enquanto no Claude Code o sandbox exige WSL2. Isso sozinho já decide muita coisa em time que roda Windows

E tem o ponto de atenção comum aos dois: delegar a revisão a um modelo muda QUEM aprova, não o que pode acontecer se a aprovação falhar

No Claude Code isso já é o padrão de novas sessões em Pro, Max e Team, então vale saber em que modo você está antes de sair rodando

Se o repositório nem é seu, a conversa fica mais delicada ainda, e aí vale alinhar antes de usar o agente em projeto de cliente

Conclusão

O próximo passo é bem concreto e leva dois minutos

Antes de abrir o repositório de produção, confira em qual modo sua sessão está: no Claude Code o Shift+Tab te mostra o ciclo, no Codex o /permissions abre o seletor

Depois fixa o que você quer de verdade: defaultMode nos settings do Claude Code, ou approval_policy e sandbox_mode no config.toml do Codex

E se você quer trava que sobrevive a qualquer modo, incluindo os que pulam prompt, é regra deny no Claude Code

Roda os dois no mesmo projeto por uma semana e compara o que cada um te perguntou. É o único teste que vale, porque a resposta depende do seu repositório e do seu nível de paranoia 😀

até o próximo post!

Perguntas frequentes

Como fixar o Claude Code no modo plan já na inicialização?

Basta iniciar com a flag: claude –permission-mode plan. Assim o agente já começa lendo arquivos e montando o plano, sem poder editar nada até você aprovar.

Como habilitar acesso à rede no sandbox workspace-write do Codex?

Por padrão a rede vem desligada nesse modo. Você habilita no ~/.codex/config.toml, na seção de configuração do workspace-write, com network_access = true.

Dá pra bloquear uma ação mesmo estando no bypassPermissions do Claude Code?

Dá. O bypassPermissions pula os prompts, mas não desliga as travas de cima: regras deny e ask continuam valendo, e um hook PreToolUse que devolve permissionDecision "deny" bloqueia a ferramenta ali também, inclusive quando a sessão foi iniciada com –dangerously-skip-permissions.

Quais operações de git o auto mode do Claude Code bloqueia por padrão?

O classificador barra git reset –hard, git checkout — ., git restore ., git clean -fd, git stash drop e git stash clear. Também bloqueia git commit –amend quando o commit em HEAD não foi criado na sessão ou já foi enviado.

O que muda quando um projeto é marcado como untrusted no Codex?

Atenção que aqui untrusted é a marcação de confiança do projeto, não o valor untrusted de approval_policy. Projeto marcado assim faz o Codex pular as camadas .codex/ daquele projeto, incluindo config local, hooks e rules, o que isola repositório em que você não confia o suficiente pra carregar automações locais.

Qual a diferença entre o classificador do auto mode do Claude Code e o auto-review do Codex?

Os dois trocam a revisão humana por um avaliador automático, mas em pontos diferentes. O classificador do Claude Code roda em Sonnet 4.6 e avalia toda ação antes da execução; o auto-review do Codex (approvals_reviewer = "auto_review") só entra nas ações que já parariam pra aprovação humana, e quando nega devolve justificativa proibindo contornar a decisão.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 30min

Blog | Mais populares