{
"id": "agent-core-impl:claude-code.core@1.x",
"_kind": "AgentCoreImpl",
"_file": "agent-stack/core-impls/claude-code-core-1-x.yaml",
"_cluster": "agent-stack",
"attributes": {
"displayName": "Claude Code Core (1.x)",
"agentVersionId": "agent-version:claude-code@1.x",
"packageRef": "source-ref:claude-code-github",
"loopIteratorPolicy": "tool-use-loop",
"loopIteratorNotes": "Tool-use loop: each turn the model emits zero or more `tool_use` blocks; the runtime\nexecutes them and appends `tool_result` blocks back into the message list. The loop\nadvances until the model returns an Anthropic Messages `stop_reason: \"end_turn\"`\n(or `\"tool_use\"` after which tools are run and the next turn is fetched). The\nPreCompact hook fires when context approaches the configured threshold and the\nruntime injects a summarized history before the next turn.\n",
"contextManagementStrategy": "platform-managed",
"compactionTriggerThresholdTokens": 0,
"compactionTriggerNotes": "PreCompact hook fires as the conversation approaches the active model's context\nwindow (community-observed at ~70% fill). Vendor docs do not publish an exact\nthreshold; treat the integer field as TODO until Anthropic documents one.\n",
"subagentInvokerPolicy": "tool-call-handoff",
"subagentInvokerNotes": "Subagents are invoked via the built-in `Task` tool (a.k.a. the `Agent` tool). The\nparent loop emits a `tool_use` for `Task` with a subagent name + prompt; the runtime\nspawns a nested tool-use loop for the subagent and returns its final assistant text\nas the `tool_result`. Up to 10 subagents can run in parallel.\n",
"resultSynthesisPolicy": "model-direct",
"resultSynthesisNotes": "The final assistant text is streamed verbatim to the host as it arrives; on\n`stop_reason: \"end_turn\"` the runtime emits the `Stop` hook (and `SubagentStop`\nfor nested Task invocations) and closes the turn.\n",
"stopDetectionStrategy": "structured-end-event",
"transportClientLibrary": "@anthropic-ai/claude-agent-sdk",
"supportedTransportProtocols": [
"model-transport:anthropic-messages"
],
"parallelToolCallHandling": "native",
"streamingFidelity": "full",
"thinkingChannelHandling": "passthrough",
"loopBudgetKnobs": [
"max_turns",
"max_budget_usd"
],
"compactionTrigger": "both",
"streamingBlocks": [
"text",
"thinking",
"tool_use"
],
"effortLevelDelegation": "native"
},
"outgoingEdges": [
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "agent:claude-code",
"kind": "composes",
"attributes": {
"role": "core"
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "source-ref:claude-code-github",
"kind": "depends_on",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "model-transport:anthropic-messages",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "layer:4-agent-core",
"kind": "realizes",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "capability:can-multi-turn",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Multi-turn conversation is the default; the core maintains\ntranscript state across turns.\n"
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "capability:parallel-tool-calls",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "The core dispatches parallel tool calls natively when the model\nemits multiple tool_use blocks in a single turn\n(parallelToolCallHandling=native).\n",
"evidenceSourceIds": [
"evidence:anthropic-tool-use-2026"
]
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "capability:streaming",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Claude Code streams model output token-by-token through the core\nloop's transport client.\n"
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "capability:supports-thinking",
"kind": "supports",
"attributes": {
"versionRange": ">=1.2.0 <2.0.0",
"level": "full",
"notes": "The core passes thinking blocks through unmodified to the\npresentation layer (thinkingChannelHandling=passthrough).\n",
"evidenceSourceIds": [
"evidence:anthropic-claude-code-thinking-2026-01"
]
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "capability:supports-tool-use",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Claude Code dispatches `tool_use` blocks emitted by the model and\nfeeds back `tool_result` blocks on the next turn.\n"
}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "output-guard:claude-code-aup-refusal",
"kind": "output_guard_applied_by",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:pre-tool-use",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:post-tool-use",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:user-prompt-submit",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:stop",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:claude.subagent-start",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:subagent-stop",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "hook-surface:pre-compact",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:system-message",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:assistant-message",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:user-message",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:stream-event",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:result-message-success",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:result-message-error-max-turns",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:result-message-error-max-budget-usd",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:result-message-error-during-execution",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "protocol-message:result-message-error-max-structured-output-retries",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "effort-level:low",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "effort-level:medium",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "effort-level:high",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "effort-level:xhigh",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:claude-code.core@1.x",
"to": "effort-level:max",
"kind": "supports_effort_level",
"attributes": {}
}
],
"incomingEdges": [
{
"from": "agent-version:claude-code@1.x",
"to": "agent-core-impl:claude-code.core@1.x",
"kind": "composed_of",
"attributes": {
"role": "core"
}
}
]
}