AI Blog

Claude and ChatGPT's New Auto Permission Modes

chatgptclaudeSecuritycodex 4 min read
Claude's auto permission mode
Claude's auto permission mode.

Both Claude Code and ChatGPT have rolled out auto-approval modes that let the assistant keep working without stopping for every prompt. They are useful, but they shift where the safety boundary actually lives, which is worth understanding before flipping the switch.

What “auto” actually means

The new modes do not remove permissions. They re-route them. Instead of asking before each action, the assistant proceeds on low-risk work and pauses only when something looks consequential: deleting data, touching shared systems, or sending messages to external services.

In Claude Code, auto mode is opt-in per session and still routes through the normal allow/deny rules in settings.json. In ChatGPT’s agentic flows, the equivalent is the agent’s autonomous execution mode, which keeps a similar guardrail around irreversible actions.

The point is not “approve everything.” It is “approve a class of things in advance, and stop me on the rest.”

Where this is genuinely useful

Where to keep your hand on the wheel

The mode is not a substitute for review. It just changes when the review happens.

Configure it once, trust it consistently

The pattern that works best is to spend a few minutes tuning the allow/deny list up front. Allow the boring read-only commands you run all day. Keep deletions, force-pushes, and outbound messages on the manual list. That way auto mode removes the noise without removing the things that actually need a human.

In Claude Code, that lives in ~/.claude/settings.json (or the project-scoped .claude/settings.json) and looks something like this:

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(npm test)",
      "Bash(npm run build)",
      "Read(**)",
      "Grep(**)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(gh pr merge:*)"
    ]
  }
}

The allow list is the boring stuff you would approve every time anyway. The deny list is the small set of things you never want the assistant doing on its own, regardless of mode. Everything else still prompts.

If you find yourself reflexively approving every prompt anyway, that is a signal that your allowlist needs work, not that you should bypass permissions entirely. Which, as covered in the previous post, is a different problem with a much worse failure mode.

The short version

Auto mode is a productivity feature with a safety contract. It works when you treat it as “pre-approved scope” rather than “full trust,” and when the boundary between the two is something you actually thought about, not something you accepted by default.