Session Config Options are the preferred way to expose session-level
configuration. If an Agent provides
configOptions, Clients SHOULD use
them instead of the modes field. Modes will be
removed in a future version of the protocol.Initial State
During Session Setup the Agent MAY return a list of configuration options and their current values:The list of configuration options available for this session. The order of
this array represents the Agent’s preferred priority. Clients SHOULD
respect this ordering when displaying options.
ConfigOption
Unique identifier for this configuration option. Used when setting values.
Human-readable label for the option
Optional description providing more details about what this option controls
Optional semantic category to help Clients provide
consistent UX.
The type of input control.
select is supported by default. boolean is only
supported when the Client advertises session.configOptions.boolean: {} in
clientCapabilities.The current value for this option. For
select options this is a string value
ID. For boolean options this is a boolean.The available values for a
select option. Required when type is "select"
and omitted when type is "boolean".ConfigOptionValue
The value identifier used when setting this option
Human-readable name to display
Optional description of what this value does
Boolean Config Options
Agents MAY include boolean config options only after the Client advertises support during initialization:session, configOptions, or boolean means the Client does not
advertise support.
When support is advertised, a boolean option uses type: "boolean" and a
boolean currentValue:
type: "boolean" options in configOptions
payloads unless the Client advertised support. Agents that need to support
older Clients should omit the boolean option or provide a select fallback.
Option Categories
Each config option MAY include acategory field. Categories are semantic metadata intended to help Clients provide consistent UX, such as attaching keyboard shortcuts, choosing icons, or deciding placement.
Category names beginning with _ are free for custom use (e.g., _my_custom_category). Category names that do not begin with _ are reserved for the ACP spec.
Clients SHOULD render
model_config options near the model selector, such as in the same popover or panel. No capability negotiation is required for category values.
When multiple options share the same category, Clients SHOULD use the array ordering to resolve ties, preferring earlier options in the list for prominent placement or keyboard shortcuts.
Option Ordering
The order of theconfigOptions array is significant. Agents SHOULD place higher-priority options first in the list.
Clients SHOULD:
- Display options in the order provided by the Agent
- Use ordering to resolve ties when multiple options share the same category
- If displaying a limited number of options, prefer those at the beginning of the list
Default Values and Graceful Degradation
Agents MUST always provide a default value for every configuration option. This ensures the Agent can operate correctly even if:- The Client doesn’t support configuration options
- The Client chooses not to display certain options
- The Client receives an option type it doesn’t recognize
type, it SHOULD ignore that option. The Agent will continue using its default value.
Setting a Config Option
The current value of a config option can be changed at any point during a session, whether the Agent is idle or generating a response.From the Client
Clients can change a config option value by calling thesession/set_config_option method:
The ID of the session
The
id of the configuration option to changeThe new value to set. For
select options, this must be one of the values
listed in the option’s options array. For boolean options, this must be a
boolean.type: "boolean" with a boolean value:
The response always contains the complete configuration state. This allows
Agents to reflect dependent changes. For example, if changing the model
affects available reasoning options, or if an option’s available values change
based on another selection.
From the Agent
The Agent can also change configuration options and notify the Client by sending aconfig_option_update session notification:
- Switching modes after completing a planning phase
- Falling back to a different model due to rate limits or errors
- Adjusting available options based on context discovered during execution
Relationship to Session Modes
Session Config Options supersede the older Session Modes API. However, during the transition period, Agents that provide mode-like configuration SHOULD send both:configOptionswith acategory: "mode"option for Clients that support config optionsmodesfor Clients that only support the older API
configOptions and modes in the session response:
- Clients that support config options SHOULD use
configOptionsexclusively and ignoremodes - Clients that don’t support config options SHOULD fall back to
modes - Agents SHOULD keep both in sync to ensure consistent behavior regardless of which field the Client uses
Learn about the Session Modes API