Latest in AI
Claude Code 2.1.325: Why Sandboxed Commands Ask for Permission
The release changes sandbox and scheduled-task approval behavior, so an extra prompt may be the intended result rather than a broken setup.
Claude Code 2.1.325 changes sandboxed Bash commands to follow the normal permission flow by default. Released on November 13, it also changes approval behavior for scheduled skills. If an unattended workflow now pauses, inspect the permission decision before treating the update as a model or scheduler failure.
The versioned release notes describe the changes directly. This guide explains their operational consequences from documentation; it does not report tests of an upgraded installation.
A sandbox and an approval rule answer different questions
A sandbox limits what a process can reach. A permission decision determines whether the requested action should run. Confusing the two makes “it is sandboxed” sound like sufficient authorization for whatever happens inside it.
The sandbox documentation distinguishes regular permissions from auto-allow mode. In 2.1.325, retaining auto-allow behavior requires explicitly setting sandbox.autoAllowBashIfSandboxed to true. Organizations whose managed settings enable the sandbox must set that choice in their highest-ranking managed source if they want it.
That is a policy decision, not a universal repair instruction. I would leave the new default in place while identifying which recurring commands need review. Making the agent quiet again is not a useful success criterion if the change also grants more authority than the workflow needs.
Find the setting source before editing another file
Run /status and inspect Setting sources before trying to change sandbox behavior. The documentation says /sandbox saves locally, and cannot override relevant values supplied by managed settings or --settings. An administrator-controlled value needs an administrator's decision.
For example, suppose a team's overnight check pauses at a shell command after the upgrade. First record the exact requested command and the prompt. Then establish whether the active configuration comes from the project, a command-line settings file or managed policy. Editing a second local file without checking precedence can leave the effective policy unchanged while making the configuration harder to understand.
Keep three outcomes separate: a command waiting for approval, a command refused by policy, and a command failing after it starts. They require different responses. A network restriction will not necessarily disappear because a permission prompt was approved, and an approval change is not a reason to widen network access.
Scheduled skills can pause for a different reason
The release also makes scheduled tasks and /loop ask before invoking a skill that declares allowed-tools or hooks. It documents Skill(name) in permissions.allow as the explicit allowance for unattended invocation. Review the named skill's contents and hooks before considering that allowance, rather than broadly approving every skill.
Separately, the release changes “Always allow” behavior in Desktop, IDE and SDK hosts: a rule alone is offered only when saving it would permit that command again. A task that depended on the previous behavior can therefore wait for input.
The scheduling guide helps separate approval problems from scheduling problems. /loop requires an open session and a running machine; cloud tasks do not. Session tasks can be restored on resume, with documented exceptions. Do not diagnose a sleeping machine or closed session as a permission regression.
For a scheduled pull-request check, inspect the layers in order: did the schedule fire, did Claude invoke the intended skill, and did the command run? A log showing the first step is not evidence that the last one completed.
Validate the workflow without removing its safeguards
Use a disposable repository and a harmless read-only check for the first run. The following is a proposed acceptance checklist, not a claim that these checks have passed:
- Confirm the installed version and capture the effective setting sources.
- Run the intended skill interactively and inspect its tool requests.
- Trigger the same skill through the scheduling method you actually use.
- Confirm that a deliberately disallowed action remains disallowed.
- Record whether the task completed, waited for approval or failed after execution began.
Avoid changing the sandbox mode, skill allowance and schedule at the same time. Otherwise, a successful retry tells you little about which change mattered, and a failed retry leaves several new variables to unwind.
The useful outcome is an unattended workflow with a known permission boundary. An extra prompt can reveal a decision the old setup was making implicitly. Resolve that decision deliberately before restoring automation.
I'm Paras. I work at the intersection of AI, engineering and distribution.
I help technical teams explain developer tools, migrations and operational changes through clear technical writing.