Skip to content

Expose generic ACP session configuration options through Agent Server #4062

Description

@neubig

Problem

ACP agents can advertise session-scoped configOptions and accept updates through session/set_config_option. The SDK currently recognizes the model option (plus Codex reasoning effort as part of model selection), but it does not retain or expose other advertised options.

This means provider capabilities are lost between the ACP subprocess and Agent Server clients. A concrete example is @agentclientprotocol/codex-acp@1.1.2, which advertises a fast-mode option for models whose Codex catalog supports the fast service tier. The adapter accepts updates to that option and applies serviceTier: "fast" to subsequent turns, but Agent Canvas cannot discover or change it.

This is intentionally out of scope for #4056, which updates the Codex ACP adapter and GPT-5.6 model support.

Proposed direction

  • Add a provider-agnostic representation for ACP session configuration options, including at least select and boolean options.
  • Preserve the options returned by session/new, session/load, and session/resume.
  • Expose current values and available choices through Agent Server APIs.
  • Add a generic operation for applying an option by config ID and value through session/set_config_option.
  • Define persistence and resume behavior so the serialized state matches the live ACP session.
  • Keep model selection as a typed convenience API built on the generic mechanism where appropriate.
  • Add focused coverage using a mock ACP server that advertises a non-model option.

Downstream work

Once Agent Server exposes these options, the TypeScript client and Agent Canvas should render suitable controls from the advertised schema. For Codex, that would surface fast-mode as a toggle or select only when the selected model supports it.

Non-goals

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions