Anmelden

The Claude Code Changelog· Folge 174

Taming Worker Thinking with CLAUDE_CODE_SUBAGENT_EFFORT

Samstag, 31. Oktober 2026 · 5 min

MP3

Shownotes

Learn how to decouple worker reasoning from main sessions using the new CLAUDE_CODE_SUBAGENT_EFFORT environment variable in Claude Code 2.1.316. We also cover disabling ultrathink, blocking external file writes, and the timeline for Opus 4.8 fast mode deprecation.

Transkriptvom Podcast bereitgestellt · Zeitmarken springen hin

Righto, grab a coffee, because this one's a quick win. This is The Claude Code Changelog, brought to you by Jellypod AI. Anthropic shipped 2.1.316 on October 31st, right after 2.1.314 on the 30th, and the one I'd change my setup for today is a new environment variable: CLAUDE_CODE_SUBAGENT_EFFORT. Here's the backstory.

Back in 2.1.292 we got an effort parameter for subagents. Before that, and still today when nothing names an effort, a subagent inherited the effort of the session that spawned it. So if you bump your main session to high or xhigh for a nasty bug, every little helper you delegate to runs at that same depth.

Searching files, drafting a test, running a check. All of them thinking as hard as the main thread. That's like hiring a brain surgeon to carry the groceries in. Lovely work, but a bit of overkill. And remember 2.1.311, where the ultrathink keyword bumps that turn's effort to xhigh. Pair that with inheritance and one keyword can ripple out to every worker underneath.

Right, and the release note for 2.1.316 is pretty plain. CLAUDE_CODE_SUBAGENT_EFFORT sets the effort level subagents run at when nothing else names one, instead of inheriting the session's. So you can keep your interactive session at xhigh while background workers default to something cheaper and faster.

Setup is two lines of effort. In your shell, export CLAUDE_CODE_SUBAGENT_EFFORT equals low. You can also use medium, high, or xhigh. Or make it stick per project or per user by putting it in settings.json, either in your home claude folder or in the dot claude folder inside the repo. Under the env key, you write CLAUDE_CODE_SUBAGENT_EFFORT as the key, and low as the value.

The order matters here, so let me spell it out. First, if the subagent's own definition names an effort, in its YAML frontmatter or in the prompt that spawns it, that wins. Second, if that's silent, your new env var applies. Third, if neither is set, you get the old behaviour, and it inherits the parent's current effort.

So nothing changes for you until you opt in.

A practical pattern set the variable to low or medium globally.

Then, for the one reviewer agent where depth really pays off, say a security reviewer or an architecture critic, put an explicit effort of high in its frontmatter. Everything else stays cheap by default, and the agent that earns it keeps the deep reasoning. That's the whole trick. Default low, override where it counts.

Two caveats. One, it's only a default. Explicit frontmatter still beats it, so if some agent in your repo says high, the variable won't tone it down. Two, it's about effort, not model choice. It doesn't replace CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL or CLAUDE_CODE_SUBAGENT_MODEL_FORCE. Those pick which model runs.

This picks how hard it thinks. Also in 2.1.316, and related: CLAUDE_CODE_DISABLE_ULTRATHINK. Set it to 1 and the ultrathink keyword is turned off. That's handy when you want effort pinned, like a cost capped CI job or a shared workspace where you don't want a stray word in a prompt spiking a turn to xhigh.

And in VS Code, ultrathink now runs its turn at xhigh and shows in rainbow in the chat box, same as the terminal. Now the smaller bits. In 2.1.314, there's a new setting, permissions.blockWritesOutsideWorkingDirectories. It makes Write, Edit, and NotebookEdit refuse paths outside your declared working directories in every permission mode, even bypassPermissions or dontAsk.

But mind the catch it covers the file tools only, not raw Bash commands.

Also 2.1.314 in VS Code and Desktop, sessions over 200K tokens that sit idle

get summarized, and that summary is used on your next message if the prompt cache has expired. And 2.1.316 fixes shell commands being left running on macOS and Linux when Claude Code exits on its own, like when credentials are rejected. It also fixes bash aliases with line breaks, and functions starting with a dash, getting garbled in the Bash tool.

One date to put in your calendar. Fast mode for Opus 4.8 is deprecated as of October 30, 2026, and it's removed on November 30th. After that, fast mode requests on Opus 4.8 return an error. They do not fall back to standard Opus 4.8. To keep the speedup, migrate to Opus 5.5. So your homework is small.

Add CLAUDE_CODE_SUBAGENT_EFFORT to your settings, name the agents that deserve more, and check whether anything of yours still leans on fast mode with Opus 4.8. That's the changelog for today.

Anmelden oder registrieren

Jetzt

0:00 / 0:00