# Claude Code v2.1.215

> Claude Code v2.1.215, released 19 Jul 2026 (2026-07-19). 10 entries read out of the shipped bundle. Unofficial, and not affiliated with Anthropic.

Web version: https://changelogs.core-directive.com/v/2.1.215

This release introduces a new subagent delegation steering system that lets operators control how aggressively Claude suggests or uses subagents, controlled by the `CLAUDE_CODE_THISTLE_GREBE` environment variable. Two additional feature flags (`CLAUDE_CODE_MARL_CORMORANT` and `CLAUDE_CODE_GAULT_KESTREL`) are added for upcoming experiments. The `/code-review` and `/simplify` skills gain a `disableModelInvocation` flag to prevent redundant model processing.

## New Features

### Subagent Delegation Steering via `CLAUDE_CODE_THISTLE_GREBE`

**What**

A new environment variable that controls how strongly Claude is nudged toward (or away from) spawning subagents. Three modes let you tune the behavior for different workflows.

**Usage**

`CLAUDE_CODE_THISTLE_GREBE=counter_steer claude CLAUDE_CODE_THISTLE_GREBE=no_nudges claude # or leave unset / set to "default" for existing behavior` **Details** - `default` — no change from existing behavior. Claude receives normal guidance about when to spawn subagents and is encouraged to parallelize work with the Agent tool. - `no_nudges` — suppresses proactive suggestions to spawn subagents. Claude no longer sees prompts suggesting it fan out to multiple agents for broad exploration. The post-plan-approval hint ("consider spawning named teammates to parallelize the work") is also suppressed. The concurrency note shown in the tool-use header is hidden. - `counter_steer` — injects an active counter-delegation block into the system prompt. Claude sees explicit guidance discouraging delegation for small tasks: "Do the work inline when it is a small, bounded sub-task — a few file reads, one search, a short edit, a single check. Do not spawn a subagent for work you could finish yourself in a handful of tool calls." This mode also hides suggestions to use the Agent tool in Glob, Grep, and Plan mode descriptions. The value can alternatively be set server-side via client data or as a GrowthBook feature flag (`tengu_thistle_grebe`). The env var takes precedence over the other sources.

**Evidence**

New steering resolver and mode constant `"tengu_thistle_grebe"`, counter-steer instruction block (search for `"Delegating to subagents"` and `"Do the work inline when it is a small, bounded sub-task"`)

- Flag `tengu_thistle_grebe`: Not enough to say (read for one account on one subscription tier against v2.1.215; this account: no value returned, anonymous baseline: no value returned, compiled default: not a boolean we can read) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

## Improvements

### `/code-review` and `/simplify` Skip Redundant Model Invocation

The `/code-review` and `/simplify` slash commands now carry `disableModelInvocation: true` in their skill definition. Previously, Claude's main model re-processed the command after the skill loaded, which was redundant because both skills immediately hand off to an embedded multi-agent workflow. With this flag set, the skill executes its own agentic logic directly without an extra round-trip through the main model. Users should notice no behavioral change, but the commands may start slightly faster and consume fewer tokens on the initial dispatch.

**Evidence**

`disableModelInvocation: !0` added to both skill objects (search for `"disableModelInvocation"` near the `/simplify` and `/code-review` command definitions)

### Bash Tool Clarifies Output Visibility

The Bash tool description now explicitly states: "Command output is displayed to you, not reliably to the user." This clarifies a common point of confusion in non-interactive and background session contexts where Claude might otherwise assume the user can see terminal output directly. The note appears as a bullet in the tool's capability list.

**Evidence**

New bullet added to Bash tool description (search for `"Command output is displayed to you, not reliably to the user."`)

### Glob Tool Description Is Now Mode-Aware

The Glob tool's long description previously always included the line "When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead." This line now appears only in `default` steering mode. In `no_nudges` or `counter_steer` modes it is omitted, consistent with those modes suppressing subagent encouragement.

The full Glob description (with the Agent suggestion) is now stored as a separate constant from the abbreviated form, and `Tji()` selects between them based on the active steering mode.

**Evidence**

Conditional Glob description selection (search for `"use the Agent tool instead"` near Glob tool description logic)

### Grep Tool "Use Agent for Multi-Round Searches" Note Is Now Conditional

Similarly to Glob, the Grep tool description's line recommending the Agent tool for "open-ended searches requiring multiple rounds" is now suppressed in non-default steering modes. In `counter_steer` and `no_nudges` modes the note is omitted entirely.

**Evidence**

Conditional block around `"Use ${$o} tool for open-ended searches requiring multiple rounds"` in Grep description (search for `"open-ended searches requiring multiple rounds"`)

### Plan Mode Post-Approval Teammate Hint Is Steering-Aware

After the user approves a plan in plan mode, Claude previously always saw a suggestion: "If this plan can be broken down into multiple independent tasks, consider spawning named teammates with the Agent tool (pass a `name`) to parallelize the work." This message is now generated by a new `R9r()` helper that returns an empty string whenever the active steering mode is not `default`. In `counter_steer` or `no_nudges` mode the teammate suggestion is fully suppressed.

**Evidence**

`R9r()` function (search for `"If this plan can be broken down into multiple independent tasks, consider spawning named teammates"`)

### Concurrency Note Hidden in Non-Default Steering Modes

The concurrency note shown in the tool-use activity header is now gated on both the subscription tier and the steering mode. Previously it was only hidden for Pro-tier accounts. Now it also requires `x3() === "default"` — meaning `no_nudges` and `counter_steer` users no longer see the concurrency badge regardless of tier.

**Evidence**

`showConcurrencyNote: oa() !== "pro" && x3() === "default"` in tool event construction

## In Development

Features with infrastructure added but not yet enabled. These are shipped "dark" and may become available in future versions.

### Marl Cormorant Feature Flag [In Development]

**What**

A new feature flag infrastructure point that can be toggled via the `CLAUDE_CODE_MARL_CORMORANT` environment variable or the `tengu_marl_cormorant` server-side flag.

**Status**

Feature-flagged — the flag is registered and the accessor function `K_c()` is in place, but no behavioral changes downstream of this flag are visible in the diff. The specific capability it gates is not yet apparent from the current code.

**Details**

- The flag follows the same pattern as other binary feature gates: env var → client data → GrowthBook → false default.
- When `CLAUDE_CODE_MARL_CORMORANT` is set to a truthy value the flag reads as enabled.
- **Concrete downstream effect:** `K_c()` is called in exactly one place — the `Dly()` function that assembles the Bash tool's description string. When the flag is `true`, an extra bullet `"- Command output is displayed to you, not reliably to the user."` is appended to the Bash tool capability list (before the `timeout` note). When the flag is `false` (the default), that bullet is absent entirely. This means the "Bash Tool Clarifies Output Visibility" change described elsewhere in this release is itself gated on `CLAUDE_CODE_MARL_CORMORANT` — users without the flag see no change to the Bash tool description.
- The injected bullet appears after the "avoid these commands" warning and before the `timeout` line, so it sits in the middle of the tool's operating-notes block, visible to Claude every time the Bash tool description is loaded.
- No other call sites for `K_c()` are present in the source; the flag has no effect beyond this single bullet injection.

**Evidence**

`K_c()` called at line 428617 inside `Dly()` — `let l = K_c() ? ["- Command output is displayed to you, not reliably to the user."] : []` — the array is spread into the final description join at line 428627 (search for `"Command output is displayed to you"` near `K_c`)

- Flag `tengu_marl_cormorant`: Off in both readings (read for one account on one subscription tier against v2.1.215; this account: off, anonymous baseline: off, compiled default: not a boolean we can read) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

### Gault Kestrel — Shortened Overwrite Caution Guidance [In Development]

**What**

When the `tengu_gault_kestrel` flag is active (or `CLAUDE_CODE_GAULT_KESTREL` env var is set), the system-prompt caution about checking file contents before overwriting or deleting is shortened. Specifically, the phrase "if what you find contradicts how it was described, or you didn't create it, surface that instead of proceeding" is removed from the instruction.

**Status**

Feature-flagged — controlled by `CLAUDE_CODE_GAULT_KESTREL` / `tengu_gault_kestrel`. Only affects users who have this flag enabled.

**Details**

- The full existing instruction reads: "Before deleting or overwriting, look at the target — if what you find contradicts how it was described, or you didn't create it, surface that instead of proceeding."
- With the flag enabled it becomes: "Before deleting or overwriting, look at the target." — the challenge-and-surface clause is dropped.
- This likely experiments with whether the longer cautionary phrase causes Claude to be overly hesitant or to block legitimate operations.

**Evidence**

Conditional omission of the surface-on-contradiction phrase, gated by `Y_c()` which checks `"tengu_gault_kestrel"` (search for `"if what you find contradicts how it was described"`)

- Flag `tengu_gault_kestrel`: Off in both readings (read for one account on one subscription tier against v2.1.215; this account: off, anonymous baseline: off, compiled default: not a boolean we can read) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.
