# Claude Code v2.1.240: system prompt

> 0 added and 1 removed, of 221 lines, in the prompt 17 of 27 arms receive. 3 other prompts also changed. 2 of 26 tool descriptions changed. Compared against v2.1.239.

The two arm counts on this page measure different things: 17 arms receive the prompt the headline is about, and the widest edit below reached 27, because the same changed lines sit in more than one prompt.

Web version: https://changelogs.core-directive.com/prompts/2.1.240?arm=sdk-cli&config=flags-account

## What this version holds
- model strings captured: 27
- tool descriptions: 26
- compared against: v2.1.239
- system prompt edits: 1
- widest system prompt edit: +0/-2 lines
- tool descriptions changed: 2

## What moved

### System prompt (+0/-2 lines)

This edit reached all 27 arms.

The same edit landed in 2 other copies of this prompt, which differ from this one only in text interpolated per model.

```diff
@@ from line 219 @@
 
 # Context management
 When the conversation grows long, some or all of the current context is summarized; the summary, along with any remaining unsummarized context, is provided in the next context window so work can continue — you don't need to wrap up early or hand off mid-task.
-
-<total_tokens>15000000 tokens left</total_tokens>
```

### Tool: ScheduleWakeup (+0/-2 lines)

This edit reached all 27 arms.

```diff
@@ from line 4 @@
 
 Pass the same /loop prompt back via `prompt` each turn so the next firing repeats the task. For an autonomous /loop (no user prompt), pass the literal sentinel `<<autonomous-loop-dynamic>>` as `prompt` instead — the runtime resolves it back to the autonomous-loop instructions at fire time. (There is a similar `<<autonomous-loop>>` sentinel for CronCreate-based autonomous loops; do not confuse the two — ScheduleWakeup always uses the `-dynamic` variant.) To end the loop, call this tool with `stop: true` (omit every other field) — the loop ends immediately and no further wakeups fire.
 
-Set `noop: true` if nothing changed — you checked and there's nothing to report ("no change", "still waiting", "quiet hold"). Set `noop: false` if something happened worth keeping — you edited a file, posted a message, advanced state, or surfaced a finding. Consecutive `noop: true` ticks are collapsed in the user's terminal view and tracked as a streak, so long quiet holds stay legible to the user without scrolling. Omit `noop` when stopping (`stop: true`).
-
 ## Picking delaySeconds
 
 This session's requests use the default 5-minute Anthropic prompt-cache TTL. Sleeping past 300 seconds means the next wake-up reads your full conversation context uncached — slower and more expensive. So the natural breakpoints:
```

### Tool: SendMessage (+0/-19 lines)

This edit reached all 27 arms.

```diff
@@ from line 10 @@
 |---|---|
 | `"researcher"` | Teammate by name |
 | `"main"` | The main conversation (background subagents only) |
-| `"worker"` | Any agent from `ListAgents` — subagent, another local Claude session |
-| `"worker [3fa9c1]"` | Same, plus its `[ref]` — only when a listing or an error shows one |
 
 Your plain text output is NOT visible to other agents — to communicate, you MUST call this tool. Messages from teammates are delivered automatically; you don't check an inbox. Refer to agents by name — names keep working after an agent completes (a send resumes it from its transcript). Use the raw `agentId` (format `a...-...`) from its spawn result only when the agent has no name, or when a newer agent took the name (latest wins). When relaying, don't quote the original — it's already rendered to the user.
-
-## Cross-session
-
-Use `ListAgents` to discover targets. Every row leads with the agent's `name [ref]` — the name IS the address; there is no separate address syntax.
-
-```json
-{"to": "worker", "message": "check if tests pass over there"}
-{"to": "worker [3fa9c1]", "message": "you, specifically"}
-```
-
-Send the bare name — a name that exactly matches one live agent or session (on this machine, on another machine, or in the cloud) delivers directly. Append the ` [ref]` only when the bare name is not enough — `ListAgents` shows two rows with it, or an error asks you to disambiguate (you typed only a prefix, or a session list could not be checked). A ref you did not just read from a listing or an error will not resolve, and if the same name also names an in-process agent, the bare name always wins — use the in-process one.
-
-A listed peer is alive and will process your message; messages enqueue and drain at the receiver's next tool round (its `ListAgents` row says whether it is busy or idle right now). Your message arrives wrapped as `<cross-session-message from="...">`. **To reply to an incoming message, copy its `from` attribute as your `to`.**
-
-To hear when a session ON THIS MACHINE finishes what it is doing, pass `notify_when_idle: true` (from the main conversation only) — one-shot and opt-in: exactly one `[Cross-session idle notice]` arrives when it next goes idle (or exits) — shown to you, or only to your user when this session holds peer messages for approval (the tool result says which); if it never signals within the subscription's lifetime (it may still be busy, may refuse inbound requests, or may have ended abruptly) the notice says the subscription expired instead. Omit `message` for a pure subscription that costs that session nothing; include one to deliver it now AND subscribe. Never poll `ListAgents` in a loop or send "are you done?" messages instead.
-
-Permission boundaries are per-session: NEVER ask a peer to perform an action that was denied or blocked in your session, or that you expect your own permission settings would block — a peer doing it for you bypasses the user's permission decision (cross-session permission laundering). Route blocked work back to your user instead.
```

## Tool descriptions
- Agent: https://changelogs.core-directive.com/prompts/2.1.240/tools/Agent.txt?arm=sdk-cli&config=flags-account
- Bash: https://changelogs.core-directive.com/prompts/2.1.240/tools/Bash.txt?arm=sdk-cli&config=flags-account
- CronCreate: https://changelogs.core-directive.com/prompts/2.1.240/tools/CronCreate.txt?arm=sdk-cli&config=flags-account
- CronDelete: https://changelogs.core-directive.com/prompts/2.1.240/tools/CronDelete.txt?arm=sdk-cli&config=flags-account
- CronList: https://changelogs.core-directive.com/prompts/2.1.240/tools/CronList.txt?arm=sdk-cli&config=flags-account
- Edit: https://changelogs.core-directive.com/prompts/2.1.240/tools/Edit.txt?arm=sdk-cli&config=flags-account
- EnterWorktree: https://changelogs.core-directive.com/prompts/2.1.240/tools/EnterWorktree.txt?arm=sdk-cli&config=flags-account
- ExitWorktree: https://changelogs.core-directive.com/prompts/2.1.240/tools/ExitWorktree.txt?arm=sdk-cli&config=flags-account
- Monitor: https://changelogs.core-directive.com/prompts/2.1.240/tools/Monitor.txt?arm=sdk-cli&config=flags-account
- NotebookEdit: https://changelogs.core-directive.com/prompts/2.1.240/tools/NotebookEdit.txt?arm=sdk-cli&config=flags-account
- PushNotification: https://changelogs.core-directive.com/prompts/2.1.240/tools/PushNotification.txt?arm=sdk-cli&config=flags-account
- Read: https://changelogs.core-directive.com/prompts/2.1.240/tools/Read.txt?arm=sdk-cli&config=flags-account
- ReportFindings: https://changelogs.core-directive.com/prompts/2.1.240/tools/ReportFindings.txt?arm=sdk-cli&config=flags-account
- ScheduleWakeup (changed in this version): https://changelogs.core-directive.com/prompts/2.1.240/tools/ScheduleWakeup.txt?arm=sdk-cli&config=flags-account
- SendMessage (changed in this version): https://changelogs.core-directive.com/prompts/2.1.240/tools/SendMessage.txt?arm=sdk-cli&config=flags-account
- Skill: https://changelogs.core-directive.com/prompts/2.1.240/tools/Skill.txt?arm=sdk-cli&config=flags-account
- TaskCreate: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskCreate.txt?arm=sdk-cli&config=flags-account
- TaskGet: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskGet.txt?arm=sdk-cli&config=flags-account
- TaskList: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskList.txt?arm=sdk-cli&config=flags-account
- TaskOutput: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskOutput.txt?arm=sdk-cli&config=flags-account
- TaskStop: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskStop.txt?arm=sdk-cli&config=flags-account
- TaskUpdate: https://changelogs.core-directive.com/prompts/2.1.240/tools/TaskUpdate.txt?arm=sdk-cli&config=flags-account
- WebFetch: https://changelogs.core-directive.com/prompts/2.1.240/tools/WebFetch.txt?arm=sdk-cli&config=flags-account
- WebSearch: https://changelogs.core-directive.com/prompts/2.1.240/tools/WebSearch.txt?arm=sdk-cli&config=flags-account
- Workflow: https://changelogs.core-directive.com/prompts/2.1.240/tools/Workflow.txt?arm=sdk-cli&config=flags-account
- Write: https://changelogs.core-directive.com/prompts/2.1.240/tools/Write.txt?arm=sdk-cli&config=flags-account

## Full text
- system prompt: https://changelogs.core-directive.com/prompts/2.1.240/system.txt?arm=sdk-cli&config=flags-account
