Skip to content

v2.2.3-preview.28

@nikita-ashihmin nikita-ashihmin tagged this 26 Oct 05:37
After the adapter announces a native subagent session
(`subagent_spawned`), it sends a `config_option_update` with the child
session ID. The update holds one `select` option of category `model`.
Its only entry is the current model of the child, because the client may
not change it.

The entry has the same `value` and `name` as the same model in the
`model` option of the parent session, so a client can compare them. A
model that the parent option does not offer, or a parent without a model
option, keeps the full model ID as the value and the name.

Where the model comes from. The adapter reports only what Codex states
about the child, ranked in this order:

1. the `model` of the child thread in `thread/started`. It also counts
when it arrives before the spawn names its child, if the thread names
this root (or a child of it) as its parent or a spawn of this root is in
flight. The root turn end clears these early models;
2. the resolved `model` of the `subAgentActivity` item that announces
the child;
3. `thread/settings/updated` of the child, which is a real model change
and always wins.

A report from a lower source does not replace a higher one, so a
`thread/started` of a resume keeps the activity model. A settings change
sends a new snapshot. For a child that is not announced yet, the
announcement carries the last settings model, and the buffered changes
send no more updates. A model that gives the same option value sends no
new snapshot. A reopened child (a new generation) gets the same update.
ACP v2 gets the same update in the v2 config option shape.

The adapter does not guess: it does not use the `spawnAgent` model (a
role config can override it) or the model of the parent. A child without
a stated model gets no update, which the RFD allows. In Codex 0.164 the
`subAgentActivity` that announces a multi-agent v2 child carries the
resolved model, so a live child normally has one.

History replay sends only the `subAgentActivity` model of the child.
Older records without it get no update.

No update is sent for a child with no known model, to a client without
session configuration (JetBrains 2026.1), or to a client without native
subagent sessions. A child that ended, or that a reopen gave another
session, gets no report. A failed model report is logged and does not
stop the announcement or the replay.

Example (ACP v1):

```json
{"sessionId": "child-1", "update": {"sessionUpdate": "config_option_update", "configOptions": [
  {"id": "model", "name": "Model", "description": "Model Codex uses for the subagent", "category": "model", "type": "select",
   "currentValue": "gpt-5.2-codex",
   "options": [{"value": "gpt-5.2-codex", "name": "5.2 Codex", "description": "gpt-5.2-codex model"}]}
]}}
```

This follows [Child
configuration](https://github.com/agentclientprotocol/agent-client-protocol/blob/main/docs/rfds/subagents.mdx#child-configuration)
in the subagents RFD (see also
agentclientprotocol/agent-client-protocol#2482).
Assets 2
Loading