{
"id": "agent-core-impl:codex.core@1.x",
"_kind": "AgentCoreImpl",
"_file": "agent-stack/core-impls/codex-core-1-x.yaml",
"_cluster": "agent-stack",
"attributes": {
"displayName": "Codex CLI Core (1.x)",
"agentVersionId": "agent-version:codex@1.x",
"packageRef": "source-ref:codex-github",
"loopIteratorPolicy": "tool-use-loop",
"loopIteratorNotes": "Tool-use loop driven by the OpenAI Responses API. Each turn the model emits a `response.output_item.added` event sequence; the runtime executes any tool calls via its bundled shell sandbox and posts back `function_call_output` items. The loop advances until a `response.completed` event is observed. ",
"contextManagementStrategy": "rolling-summary",
"compactionTriggerNotes": "Codex maintains a rolling summary of older turns; the cutover is decided by the Codex Rust runtime, not by an exposed token threshold. ",
"subagentInvokerPolicy": "tool-call-handoff",
"subagentInvokerNotes": "Codex emits a Responses-API `handoff` event (or a structured `function_call` targeting another agent profile) and the runtime swaps the active profile/model for the duration of the sub-task. ",
"resultSynthesisPolicy": "model-direct",
"resultSynthesisNotes": "Final response text is streamed via `response.output_text.delta` events and finalized on `response.completed`; the CLI prints the assistant text to stdout when `--output-last-message` or default streaming mode is used. ",
"stopDetectionStrategy": "structured-end-event",
"transportClientLibrary": "codex-internal",
"supportedTransportProtocols": [
"model-transport:openai-responses"
],
"parallelToolCallHandling": "native",
"streamingFidelity": "full",
"thinkingChannelHandling": "model-dependent"
},
"outgoingEdges": [
{
"from": "agent-core-impl:codex.core@1.x",
"to": "layer:4-agent-core",
"kind": "realizes",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "agent:codex",
"kind": "composes",
"attributes": {
"role": "core"
}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "model-transport:openai-responses",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "capability:parallel-tool-calls",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "partial",
"notes": "Codex's tool dispatch is gated by per-call approval; parallel tool calls depend on model emission and approval policy. "
}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "capability:requires-tool-approval",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Codex's approvalGatingPrimitive is per-call; the runtime exposes --ask-for-approval and --sandbox modes to gate tool execution. "
}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "capability:streaming",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Codex CLI's runtime advertises supportsStreaming=true; tokens are streamed to the TUI. "
}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "capability:supports-tool-use",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0 <2.0.0",
"level": "full",
"notes": "Codex bundles built-in tools (read, bash) and dispatches model-emitted tool calls through the core loop with per-call approval gating. "
}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "protocol-message:openai-response-created",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "protocol-message:openai-response-output-item-added",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "protocol-message:openai-response-output-text-delta",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "protocol-message:openai-response-completed",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "protocol-message:openai-response-failed",
"kind": "emits_message_type",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "effort-level:minimal",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "effort-level:low",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "effort-level:medium",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "effort-level:high",
"kind": "supports_effort_level",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "hook-surface:codex.on-tool-call",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:codex.core@1.x",
"to": "hook-surface:codex.on-stop",
"kind": "fires_hook",
"attributes": {}
}
],
"incomingEdges": [
{
"from": "agent-version:codex@1.x",
"to": "agent-core-impl:codex.core@1.x",
"kind": "composed_of",
"attributes": {
"role": "core"
}
}
]
}