advisor-tool changedagents-and-tools/tool-use/advisor-tool
Nearest release: v2.1.299, published an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+57added
Lines−51removed
From line
60
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits20to this page, all time
The whole hunk
from line 60, old and new numbered
/
from line 60
6060 {
6161 "type": "advisor_20260301",
6262 "name": "advisor",
63 "model": "claude-opus-5"
63 "model": "claude-opus-5-5"
6464 }
6565 ],
6666 "messages": [{
from line 77
7777 tools:
7878 - type: advisor_20260301
7979 name: advisor
80 model: claude-opus-5
80 model: claude-opus-5-5
8181 messages:
8282 - role: user
8383 content: Build a concurrent worker pool in Go with graceful shutdown.
from line 95
9595 {
9696 "type": "advisor_20260301",
9797 "name": "advisor",
98 "model": "claude-opus-5",
98 "model": "claude-opus-5-5",
9999 }
100100 ],
101101 messages=[
from line 120
120120 {
121121 type: "advisor_20260301",
122122 name: "advisor",
123 model: "claude-opus-5"
123 model: "claude-opus-5-5"
124124 }
125125 ],
126126 messages: [
from line 148
148148 {
149149 new BetaAdvisorTool20260301
150150 {
151 Model = Messages::Model.ClaudeOpus5
151 Model = Messages::Model.ClaudeOpus5_5
152152 }
153153 },
154154 Messages =
from line 174
174174 MaxTokens: 4096,
175175 Tools: []anthropic.BetaToolUnionParam{
176176 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
177 Model: anthropic.ModelClaudeOpus5,
177 Model: anthropic.ModelClaudeOpus5_5,
178178 }},
179179 },
180180 Messages: []anthropic.BetaMessageParam{
from line 203
203203 .model(Model.CLAUDE_SONNET_5)
204204 .maxTokens(4096L)
205205 .addTool(BetaAdvisorTool20260301.builder()
206 .model(Model.CLAUDE_OPUS_5)
206 .model(Model.CLAUDE_OPUS_5_5)
207207 .build())
208208 .addUserMessage("Build a concurrent worker pool in Go with graceful shutdown.")
209209 .addBeta("advisor-tool-2026-03-01")
from line 230
230230 [
231231 'type' => 'advisor_20260301',
232232 'name' => 'advisor',
233 'model' => 'claude-opus-5',
233 'model' => 'claude-opus-5-5',
234234 ],
235235 ],
236236 betas: ['advisor-tool-2026-03-01'],
from line 249
249249 {
250250 type: "advisor_20260301",
251251 name: "advisor",
252 model: "claude-opus-5"
252 model: "claude-opus-5-5"
253253 }
254254 ],
255255 messages: [
from line 265
265265 ```
266266</CodeGroup>
267267
268The response `content` includes an `advisor_tool_result` block carrying the advisor's guidance. With `claude-opus-5` as the advisor, as in this quick start, the block's `content` field is an `advisor_redacted_result` variant (encrypted; the executor reads it server-side, but your client does not). To see the advice text directly in your response, use `claude-opus-4-8` as the advisor model instead, which returns the plaintext `advisor_result` variant. See [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants) for both shapes side by side and which advisor models return which, and [Model compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#model-compatibility) for the full list of valid pairs.
268The response `content` includes an `advisor_tool_result` block carrying the advisor's guidance. With `claude-opus-5-5` as the advisor, as in this quick start, the block's `content` field is an `advisor_redacted_result` variant (encrypted; the executor reads it server-side, but your client does not). To see the advice text directly in your response, use `claude-opus-4-8` as the advisor model instead, which returns the plaintext `advisor_result` variant. See [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants) for both shapes side by side and which advisor models return which, and [Model compatibility](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#model-compatibility) for the full list of valid pairs.
269269
270270## How it works
271271
from line 286
286286| ------------ | -------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
287287| `type` | string | *required* | Must be `"advisor_20260301"`. |
288288| `name` | string | *required* | Must be `"advisor"`. |
289| `model` | string | *required* | The advisor model ID, such as claude-opus-5. Billed at this model's rates for the sub-inference. |
289| `model` | string | *required* | The advisor model ID, such as claude-opus-5-5. Billed at this model's rates for the sub-inference. |
290290| `max_uses` | integer | unlimited | Maximum number of advisor calls allowed in a single request. Once the executor reaches this cap, further advisor calls return an `advisor_tool_result_error` with `error_code: "max_uses_exceeded"` and the executor continues without further advice. This is a per-request cap, not a per-conversation cap. See [Cost control](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#cost-control) for conversation-level limits. |
291291| `max_tokens` | integer | advisor model's output cap | Caps the advisor's total output (thinking plus text) per call. Minimum 1024. See [Capping advisor output](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#capping-advisor-output). |
292292| `caching` | object \| null | `null` (off) | Enables [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) for the advisor's own transcript across calls within a conversation. See [Advisor prompt caching](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#advisor-prompt-caching). |
from line 299
299299
300300### Successful advisor call
301301
302When the advisor is called, a `server_tool_use` block is followed by an `advisor_tool_result` block in the assistant's content. The following example shows the plaintext `advisor_result` variant returned by a Claude Opus 4.8 advisor. The [Quick start](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#quick-start) uses Claude Opus 5, which returns the encrypted `advisor_redacted_result` variant instead; see [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants) for both shapes side by side.
302When the advisor is called, a `server_tool_use` block is followed by an `advisor_tool_result` block in the assistant's content. The following example shows the plaintext `advisor_result` variant returned by a Claude Opus 4.8 advisor. The [Quick start](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#quick-start) uses Claude Opus 5.5, which returns the encrypted `advisor_redacted_result` variant instead; see [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants) for both shapes side by side.
303303
304304```json
305305{
from line 361
361361}
362362```
363363
364With `"model": "claude-opus-5"`, the advice is encrypted:
364With `"model": "claude-opus-5-5"`, the advice is encrypted:
365365
366366```json
367367{
from line 411
411411
412412## Multi-turn conversations
413413
414Pass the full assistant content, including `advisor_tool_result` blocks, back to the API on subsequent turns. Round-trip the result blocks verbatim: with a Claude Opus 5 advisor the result block's `content` is the encrypted `advisor_redacted_result` variant, and the server decrypts it and renders the advice into the executor's prompt on the next turn (see [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants)). The mechanics are identical for any advisor model.
414Pass the full assistant content, including `advisor_tool_result` blocks, back to the API on subsequent turns. Round-trip the result blocks verbatim: with a Claude Opus 5.5 advisor the result block's `content` is the encrypted `advisor_redacted_result` variant, and the server decrypts it and renders the advice into the executor's prompt on the next turn (see [Result variants](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#result-variants)). The mechanics are identical for any advisor model.
415415
416416<CodeGroup exclude="shell">
417417 ```python Python
from line 421
421421 {
422422 "type": "advisor_20260301",
423423 "name": "advisor",
424 "model": "claude-opus-5",
424 "model": "claude-opus-5-5",
425425 }
426426 ]
427427
from line 462
462462 {
463463 type: "advisor_20260301",
464464 name: "advisor",
465 model: "claude-opus-5"
465 model: "claude-opus-5-5"
466466 }
467467 ];
468468
from line 500
500500 using Anthropic.Models.Beta.Messages;
501501 using Messages = Anthropic.Models.Messages;
502502
503 var client = new AnthropicClient();
503 // Advisor calls run a second model inside the request, so allow more than the
504 // C# SDK's default non-streaming timeout, which it sizes from max_tokens.
505 var client = new AnthropicClient { Timeout = TimeSpan.FromMinutes(5) };
504506
505507 var tools = new BetaToolUnion[]
506508 {
507 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5 }
509 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5_5 }
508510 };
509511
510512 var messages = new List<BetaMessageParam>
from line 548
546548
547549 tools := []anthropic.BetaToolUnionParam{
548550 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
549 Model: anthropic.ModelClaudeOpus5,
551 Model: anthropic.ModelClaudeOpus5_5,
550552 }},
551553 }
552554
from line 603
601603
602604 List<BetaToolUnion> tools = List.of(
603605 BetaToolUnion.ofAdvisorTool20260301(
604 BetaAdvisorTool20260301.builder().model(Model.CLAUDE_OPUS_5).build()));
606 BetaAdvisorTool20260301.builder().model(Model.CLAUDE_OPUS_5_5).build()));
605607
606608 List<BetaMessageParam> messages = new ArrayList<>();
607609 messages.add(BetaMessageParam.builder()
from line 649
647649 [
648650 'type' => 'advisor_20260301',
649651 'name' => 'advisor',
650 'model' => 'claude-opus-5',
652 'model' => 'claude-opus-5-5',
651653 ],
652654 ];
653655
from line 690
688690 {
689691 type: "advisor_20260301",
690692 name: "advisor",
691 model: "claude-opus-5"
693 model: "claude-opus-5-5"
692694 }
693695 ]
694696
from line 768
766768
767769
768770 tools = [
769 {"type": "advisor_20260301", "name": "advisor", "model": "claude-opus-5"},
771 {
772 "type": "advisor_20260301",
773 "name": "advisor",
774 "model": "claude-opus-5-5",
775 },
770776 # ... your other tools
771777 ]
772778 task = "Build a concurrent worker pool in Go with graceful shutdown."
from line 829
823829 }
824830
825831 const tools: Anthropic.Beta.Messages.BetaToolUnion[] = [
826 { type: "advisor_20260301", name: "advisor", model: "claude-opus-5" }
832 { type: "advisor_20260301", name: "advisor", model: "claude-opus-5-5" }
827833 // ... your other tools
828834 ];
829835 const task = "Build a concurrent worker pool in Go with graceful shutdown.";
from line 901
895901
896902 var tools = new BetaToolUnion[]
897903 {
898 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5 }
904 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5_5 }
899905 // ... your other tools
900906 };
901907 var task = "Build a concurrent worker pool in Go with graceful shutdown.";
from line 976
970976
971977 tools := []anthropic.BetaToolUnionParam{
972978 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
973 Model: anthropic.ModelClaudeOpus5,
979 Model: anthropic.ModelClaudeOpus5_5,
974980 }},
975981 // ... your other tools
976982 }
from line 1069
10631069
10641070 List<BetaToolUnion> tools = List.of(
10651071 BetaToolUnion.ofAdvisorTool20260301(
1066 BetaAdvisorTool20260301.builder().model(Model.CLAUDE_OPUS_5).build())
1072 BetaAdvisorTool20260301.builder().model(Model.CLAUDE_OPUS_5_5).build())
10671073 // ... your other tools
10681074 );
10691075 String task = "Build a concurrent worker pool in Go with graceful shutdown.";
from line 1149
11431149 }
11441150
11451151 $tools = [
1146 ['type' => 'advisor_20260301', 'name' => 'advisor', 'model' => 'claude-opus-5'],
1152 ['type' => 'advisor_20260301', 'name' => 'advisor', 'model' => 'claude-opus-5-5'],
11471153 // ... your other tools
11481154 ];
11491155 $task = 'Build a concurrent worker pool in Go with graceful shutdown.';
from line 1207
12011207 end
12021208
12031209 tools = [
1204 { type: "advisor_20260301", name: "advisor", model: "claude-opus-5" }
1210 { type: "advisor_20260301", name: "advisor", model: "claude-opus-5-5" }
12051211 # ... your other tools
12061212 ]
12071213 task = "Build a concurrent worker pool in Go with graceful shutdown."
from line 1278
12721278 },
12731279 {
12741280 "type": "advisor_message",
1275 "model": "claude-opus-5",
1281 "model": "claude-opus-5-5",
12761282 "input_tokens": 823,
12771283 "cache_read_input_tokens": 0,
12781284 "cache_creation_input_tokens": 0,
from line 1324
13181324 {
13191325 "type": "advisor_20260301",
13201326 "name": "advisor",
1321 "model": "claude-opus-5",
1327 "model": "claude-opus-5-5",
13221328 "caching": {"type": "ephemeral", "ttl": "5m"},
13231329 }
13241330 ]
from line 1335
13291335 {
13301336 type: "advisor_20260301",
13311337 name: "advisor",
1332 model: "claude-opus-5",
1338 model: "claude-opus-5-5",
13331339 caching: { type: "ephemeral", ttl: "5m" }
13341340 }
13351341 ];
from line 1349
13431349 {
13441350 new BetaAdvisorTool20260301
13451351 {
1346 Model = Messages::Model.ClaudeOpus5,
1352 Model = Messages::Model.ClaudeOpus5_5,
13471353 Caching = new BetaCacheControlEphemeral { Ttl = Ttl.Ttl5m }
13481354 }
13491355 };
from line 1358
13521358 ```go Go
13531359 tools := []anthropic.BetaToolUnionParam{
13541360 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
1355 Model: anthropic.ModelClaudeOpus5,
1361 Model: anthropic.ModelClaudeOpus5_5,
13561362 Caching: anthropic.BetaCacheControlEphemeralParam{TTL: anthropic.BetaCacheControlEphemeralTTLTTL5m},
13571363 }},
13581364 }
from line 1372
13661372
13671373 List<BetaToolUnion> tools = List.of(
13681374 BetaToolUnion.ofAdvisorTool20260301(BetaAdvisorTool20260301.builder()
1369 .model(Model.CLAUDE_OPUS_5)
1375 .model(Model.CLAUDE_OPUS_5_5)
13701376 .caching(BetaCacheControlEphemeral.builder()
13711377 .ttl(BetaCacheControlEphemeral.Ttl.TTL_5M)
13721378 .build())
from line 1384
13781384 [
13791385 'type' => 'advisor_20260301',
13801386 'name' => 'advisor',
1381 'model' => 'claude-opus-5',
1387 'model' => 'claude-opus-5-5',
13821388 'caching' => ['type' => 'ephemeral', 'ttl' => '5m'],
13831389 ],
13841390 ];
from line 1395
13891395 {
13901396 type: "advisor_20260301",
13911397 name: "advisor",
1392 model: "claude-opus-5",
1398 model: "claude-opus-5-5",
13931399 caching: { type: "ephemeral", ttl: "5m" }
13941400 }
13951401 ]
from line 1427
14211427 {
14221428 "type": "advisor_20260301",
14231429 "name": "advisor",
1424 "model": "claude-opus-5",
1430 "model": "claude-opus-5-5",
14251431 },
14261432 {
14271433 "name": "run_bash",
from line 1450
14441450 {
14451451 type: "advisor_20260301",
14461452 name: "advisor",
1447 model: "claude-opus-5"
1453 model: "claude-opus-5-5"
14481454 },
14491455 {
14501456 name: "run_bash",
from line 1471
14651471 var tools = new BetaToolUnion[]
14661472 {
14671473 new BetaWebSearchTool20250305 { MaxUses = 5 },
1468 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5 },
1474 new BetaAdvisorTool20260301 { Model = Messages::Model.ClaudeOpus5_5 },
14691475 new BetaTool
14701476 {
14711477 Name = "run_bash",
from line 1493
14871493 MaxUses: anthropic.Int(5),
14881494 }},
14891495 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
1490 Model: anthropic.ModelClaudeOpus5,
1496 Model: anthropic.ModelClaudeOpus5_5,
14911497 }},
14921498 {OfTool: &anthropic.BetaToolParam{
14931499 Name: "run_bash",
from line 1520
15141520 .maxUses(5L)
15151521 .build()),
15161522 BetaToolUnion.ofAdvisorTool20260301(BetaAdvisorTool20260301.builder()
1517 .model(Model.CLAUDE_OPUS_5)
1523 .model(Model.CLAUDE_OPUS_5_5)
15181524 .build()),
15191525 BetaToolUnion.ofBetaTool(BetaTool.builder()
15201526 .name("run_bash")
from line 1542
15361542 [
15371543 'type' => 'advisor_20260301',
15381544 'name' => 'advisor',
1539 'model' => 'claude-opus-5',
1545 'model' => 'claude-opus-5-5',
15401546 ],
15411547 [
15421548 'name' => 'run_bash',
from line 1565
15591565 {
15601566 type: "advisor_20260301",
15611567 name: "advisor",
1562 model: "claude-opus-5"
1568 model: "claude-opus-5-5"
15631569 },
15641570 {
15651571 name: "run_bash",
from line 1697
16911697 {
16921698 "type": "advisor_20260301",
16931699 "name": "advisor",
1694 "model": "claude-opus-5",
1700 "model": "claude-opus-5-5",
16951701 "max_tokens": 2048,
16961702 }
16971703 ]
from line 1708
17021708 {
17031709 type: "advisor_20260301",
17041710 name: "advisor",
1705 model: "claude-opus-5",
1711 model: "claude-opus-5-5",
17061712 max_tokens: 2048
17071713 }
17081714 ];
from line 1722
17161722 {
17171723 new BetaAdvisorTool20260301
17181724 {
1719 Model = Messages::Model.ClaudeOpus5,
1725 Model = Messages::Model.ClaudeOpus5_5,
17201726 MaxTokens = 2048
17211727 }
17221728 };
from line 1731
17251731 ```go Go
17261732 tools := []anthropic.BetaToolUnionParam{
17271733 {OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
1728 Model: anthropic.ModelClaudeOpus5,
1734 Model: anthropic.ModelClaudeOpus5_5,
17291735 MaxTokens: anthropic.Int(2048),
17301736 }},
17311737 }
from line 1744
17381744
17391745 List<BetaToolUnion> tools = List.of(
17401746 BetaToolUnion.ofAdvisorTool20260301(BetaAdvisorTool20260301.builder()
1741 .model(Model.CLAUDE_OPUS_5)
1747 .model(Model.CLAUDE_OPUS_5_5)
17421748 .maxTokens(2048L)
17431749 .build()));
17441750 ```
from line 1754
17481754 [
17491755 'type' => 'advisor_20260301',
17501756 'name' => 'advisor',
1751 'model' => 'claude-opus-5',
1757 'model' => 'claude-opus-5-5',
17521758 'max_tokens' => 2048,
17531759 ],
17541760 ];
from line 1765
17591765 {
17601766 type: "advisor_20260301",
17611767 name: "advisor",
1762 model: "claude-opus-5",
1768 model: "claude-opus-5-5",
17631769 max_tokens: 2048
17641770 }
17651771 ]
No line in this hunk matches that.