mirror of
https://github.com/openai/codex.git
synced 2026-05-22 20:14:17 +00:00
# What `SubagentStart` runs once when Codex creates a thread-spawned subagent, before that child sends its first model request. Thread-spawned subagents use `SubagentStart` instead of the normal root-agent `SessionStart` hook. Configured handlers match on the subagent `agent_type`, using the same value passed to `spawn_agent`. When no agent type is specified, Codex uses the default agent type. Hook input includes the normal session-start fields plus: - `agent_id`: the child thread id. - `agent_type`: the resolved subagent type. `SubagentStart` may return `hookSpecificOutput.additionalContext`. That context is added to the child conversation before the first model request. # Lifecycle Scope Only thread-spawned subagents run `SubagentStart`. Internal/system subagents such as Review, Compact, MemoryConsolidation, and Other do not run normal `SessionStart` hooks and do not run `SubagentStart`. This avoids exposing synthetic matcher labels for internal implementation paths. Also the `SessionStart` hook no longer fires for subagents, this matches behavior with other coding agents' implementation # Stack 1. This PR: add `SubagentStart`. 2. #22873: add `SubagentStop`. 3. #22882: add subagent identity to normal hook inputs.
64 lines
1.3 KiB
JSON
Generated
64 lines
1.3 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"additionalProperties": false,
|
|
"definitions": {
|
|
"HookEventNameWire": {
|
|
"enum": [
|
|
"PreToolUse",
|
|
"PermissionRequest",
|
|
"PostToolUse",
|
|
"PreCompact",
|
|
"PostCompact",
|
|
"SessionStart",
|
|
"UserPromptSubmit",
|
|
"SubagentStart",
|
|
"Stop"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"SessionStartHookSpecificOutputWire": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"additionalContext": {
|
|
"default": null,
|
|
"type": "string"
|
|
},
|
|
"hookEventName": {
|
|
"$ref": "#/definitions/HookEventNameWire"
|
|
}
|
|
},
|
|
"required": [
|
|
"hookEventName"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"continue": {
|
|
"default": true,
|
|
"type": "boolean"
|
|
},
|
|
"hookSpecificOutput": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/SessionStartHookSpecificOutputWire"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"stopReason": {
|
|
"default": null,
|
|
"type": "string"
|
|
},
|
|
"suppressOutput": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"systemMessage": {
|
|
"default": null,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"title": "subagent-start.command.output",
|
|
"type": "object"
|
|
} |