# Claude Code v2.1.166: system prompt

> 1 of 25 tool descriptions changed. Compared against v2.1.165.

Web version: https://changelogs.core-directive.com/prompts/2.1.166?arm=cli

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

## What moved

### Tool: Workflow (+1/-1 lines)

This edit reached all 27 arms.

```diff
@@ from line 43 @@
 The `meta` object must be a PURE LITERAL — no variables, function calls, spreads, or template interpolation. Required fields: `name`, `description`. Optional: `whenToUse` (shown in the workflow list), `phases`. Use the SAME phase titles in meta.phases as in phase() calls — titles are matched exactly; a phase() call with no matching meta entry just gets its own progress group. Add `model` to a phase entry when that phase uses a specific model override.
 
 Script body hooks:
-- agent(prompt: string, opts?: {label?: string, phase?: string, schema?: object, model?: string, isolation?: 'worktree', agentType?: string}): Promise<any> — spawn a subagent. Without schema, returns its final text as a string. With schema (a JSON Schema), the subagent is forced to call a StructuredOutput tool and agent() returns the validated object — no parsing needed. Returns null if the user skips the agent mid-run (filter with .filter(Boolean)). opts.label overrides the display label. opts.phase explicitly assigns this agent to a progress group (use this inside pipeline()/parallel() stages to avoid races on the global phase() state — same phase string → same group box). opts.model overrides the model for this agent call. Default to omitting it — the agent inherits the main-loop model (the resolved session model), which is almost always correct. Only set it when you're highly confident a different tier fits the task; when unsure, omit. opts.isolation: 'worktree' runs the agent in a fresh git worktree — EXPENSIVE (~200-500ms setup + disk per agent), use ONLY when agents mutate files in parallel and would otherwise conflict; the worktree is auto-removed if unchanged. opts.agentType uses a custom subagent type (e.g. 'Explore', 'code-reviewer') instead of the default workflow subagent — resolved from the same registry as the Agent tool; composes with schema (the custom agent's system prompt gets a StructuredOutput instruction appended).
+- agent(prompt: string, opts?: {label?: string, phase?: string, schema?: object, model?: string, isolation?: 'worktree', agentType?: string}): Promise<any> — spawn a subagent. Without schema, returns its final text as a string. With schema (a JSON Schema), the subagent is forced to call a StructuredOutput tool and agent() returns the validated object — no parsing needed. Returns null if the user skips the agent mid-run or the subagent dies on a terminal API error after retries (filter with .filter(Boolean)). opts.label overrides the display label. opts.phase explicitly assigns this agent to a progress group (use this inside pipeline()/parallel() stages to avoid races on the global phase() state — same phase string → same group box). opts.model overrides the model for this agent call. Default to omitting it — the agent inherits the main-loop model (the resolved session model), which is almost always correct. Only set it when you're highly confident a different tier fits the task; when unsure, omit. opts.isolation: 'worktree' runs the agent in a fresh git worktree — EXPENSIVE (~200-500ms setup + disk per agent), use ONLY when agents mutate files in parallel and would otherwise conflict; the worktree is auto-removed if unchanged. opts.agentType uses a custom subagent type (e.g. 'Explore', 'code-reviewer') instead of the default workflow subagent — resolved from the same registry as the Agent tool; composes with schema (the custom agent's system prompt gets a StructuredOutput instruction appended).
 - pipeline(items, stage1, stage2, ...): Promise<any[]> — run each item through all stages independently, NO barrier between stages. Item A can be in stage 3 while item B is still in stage 1. This is the DEFAULT for multi-stage work. Wall-clock = slowest single-item chain, not sum-of-slowest-per-stage. Every stage callback receives (prevResult, originalItem, index) — use originalItem/index in later stages to label work without threading context through stage 1's return value. A stage that throws drops that item to `null` and skips its remaining stages.
 - parallel(thunks: Array<() => Promise<any>>): Promise<any[]> — run tasks concurrently. This is a BARRIER: awaits all thunks before returning. A thunk that throws (or whose agent errors) resolves to `null` in the result array — the call itself never rejects, so `.filter(Boolean)` before using the results. Use ONLY when you genuinely need all results together.
 - log(message: string): void — emit a progress message to the user (shown as a narrator line above the progress tree)
```

## Tool descriptions
- Agent: https://changelogs.core-directive.com/prompts/2.1.166/tools/Agent.txt?arm=cli
- AskUserQuestion: https://changelogs.core-directive.com/prompts/2.1.166/tools/AskUserQuestion.txt?arm=cli
- Bash: https://changelogs.core-directive.com/prompts/2.1.166/tools/Bash.txt?arm=cli
- CronCreate: https://changelogs.core-directive.com/prompts/2.1.166/tools/CronCreate.txt?arm=cli
- CronDelete: https://changelogs.core-directive.com/prompts/2.1.166/tools/CronDelete.txt?arm=cli
- CronList: https://changelogs.core-directive.com/prompts/2.1.166/tools/CronList.txt?arm=cli
- Edit: https://changelogs.core-directive.com/prompts/2.1.166/tools/Edit.txt?arm=cli
- EnterPlanMode: https://changelogs.core-directive.com/prompts/2.1.166/tools/EnterPlanMode.txt?arm=cli
- EnterWorktree: https://changelogs.core-directive.com/prompts/2.1.166/tools/EnterWorktree.txt?arm=cli
- ExitPlanMode: https://changelogs.core-directive.com/prompts/2.1.166/tools/ExitPlanMode.txt?arm=cli
- ExitWorktree: https://changelogs.core-directive.com/prompts/2.1.166/tools/ExitWorktree.txt?arm=cli
- NotebookEdit: https://changelogs.core-directive.com/prompts/2.1.166/tools/NotebookEdit.txt?arm=cli
- Read: https://changelogs.core-directive.com/prompts/2.1.166/tools/Read.txt?arm=cli
- ScheduleWakeup: https://changelogs.core-directive.com/prompts/2.1.166/tools/ScheduleWakeup.txt?arm=cli
- Skill: https://changelogs.core-directive.com/prompts/2.1.166/tools/Skill.txt?arm=cli
- TaskCreate: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskCreate.txt?arm=cli
- TaskGet: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskGet.txt?arm=cli
- TaskList: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskList.txt?arm=cli
- TaskOutput: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskOutput.txt?arm=cli
- TaskStop: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskStop.txt?arm=cli
- TaskUpdate: https://changelogs.core-directive.com/prompts/2.1.166/tools/TaskUpdate.txt?arm=cli
- WebFetch: https://changelogs.core-directive.com/prompts/2.1.166/tools/WebFetch.txt?arm=cli
- WebSearch: https://changelogs.core-directive.com/prompts/2.1.166/tools/WebSearch.txt?arm=cli
- Workflow (changed in this version): https://changelogs.core-directive.com/prompts/2.1.166/tools/Workflow.txt?arm=cli
- Write: https://changelogs.core-directive.com/prompts/2.1.166/tools/Write.txt?arm=cli

## Full text
- system prompt: https://changelogs.core-directive.com/prompts/2.1.166/system.txt?arm=cli
