Conversation
59e4455 to
70166f4
Compare
|
Planning to update to:
I might split the two proposals out in the near future depending on need! |
benbrandt
left a comment
There was a problem hiding this comment.
Thanks for kicking this off! A few thoughts:
- Without a breaking change, we definitely would need to make sure no inputs are required (could revisit as a v2 protocol version)
- Session Config options were purposely a bit restricted since they need to encapsulate not only what config options are available, but also their current state, since they are "live" forms so to speak, and can be updated by both the user and the agent
- I wonder if we should somehow treat new/load options more similarly to MCP elicitation #376 since we likely want some more flexibility, and this is more of an input form to be filled out once that doesn't have the same state considerations of session config
MCP elicitation takes a JSON Schema approach, but is much more restricted to limit the client burden. We need to support it anyway for MCP support + other agent needs like asking users specific questions, so I guess my thought is: if the client supports elicitation, could we use the same thing to also support requesting additional inputs from the user when starting a session?
I like the approach of keeping this as similar as possible to session config, but I also wonder if this is a different enough use case, we can actually make it more similar to elicitation instead.
Another thought: could the agent do an elicitation post new thread happening to request more configuration if needed before the user sends a prompt?
And another: are these config options something we as clients should show on every new session? Or do some of these configuration options only need to be set on first load if configuration hasn't been set yet? And the defaults carry over unless a user wants to change them?
| "agentCapabilities": { ... }, | ||
| "agentInfo": { ... }, | ||
| "configOptions": { | ||
| "session/new": [ |
There was a problem hiding this comment.
I wonder if we can somehow come up with a more structured way of handling this since we know which resources this affects, but maybe it is also fine to tie this to method names since those are stable enough. Just recording my indecision 😄
There was a problem hiding this comment.
Maybe a better option is to have a discovery method like "session/new_options" and server returns the config.
Proposal for allowing Agents to declare what input options they accept for session/new and session/load requests in InitializeResponse. This complements the existing Session Config Options RFD: - Input Options: Discovery of options for session creation/loading - Config Options: Runtime configuration during a session Key features: - JSON Schema subset for rich type definitions - Separate schemas for newSession vs loadSession - Enables dynamic client UIs for session configuration - All options are optional - Agents must provide defaults Co-Authored-By: Claude <noreply@anthropic.com>
- Add `hint` for UI guidance (placeholder text, input hints) - Add `default` for declaring default values agents will use - Update examples to demonstrate usage - Add open question about whether both description and hint are needed Co-Authored-By: Claude <noreply@anthropic.com>
- Change schema format from custom types to JSON Schema 2020-12 subset - Rename configOptions (schema) to configSchema in InitializeResponse - Add alternatives considered section documenting post-session elicitation - Reference MCP elicitation spec instead of duplicating schema details Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3b65b61 to
147bb5a
Compare
- Use MCP elicitation JSON Schema format (no need to redefine) - Clarify status quo: _meta workarounds, no discovery or standard config field - Move elicitation alternatives to "Alternatives Considered" section - Streamline document to focus on init-time discovery proposal Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…around Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
| **Cons:** | ||
|
|
||
| - **Client still cannot show config UI before user clicks "New Session"** - Same UX limitation as Alternative A. | ||
| - **Correlation problem** - Without a session ID, client doesn't know which pending `session/new` request the elicitation belongs to. Requires protocol additions (e.g., `relatedRequestId`) to link them. |
There was a problem hiding this comment.
we're currently working on ability to provide requestId in the elicitation request — #792 We need this functionality for things other then config options, will it maybe work for this scenario too?
Contextual pre-session model discovery, including startup and authentication guaranteesFollowing the suggestion of a discovery method, could this RFD cover a supported, negotiated contextual query for models and per-model reasoning options before creating a session, including an explicit refresh? A launcher needs choices for its intended working directory and provider/configuration context before the first launch. A connection-wide schema alone may not capture those differences. In a static review of codex-acp at Could the supported discovery path cover startup and initialize as well as the query, without creating or resuming an operational session, sending a prompt, running inference, mutating authentication, or exposing credentials? The current launcher starts App Server before ACP initialize, and initialize schedules an account-status read. Passing Partial information should remain explicit: unsupported discovery, an unavailable or empty catalog, and unqueried model-specific options should not become invented defaults or evidence that a model can execute. A default may be omitted; reasoning options need to remain associated with their model. Cancellation and resource-closure semantics should be documented, with process-exit observation remaining the client/supervisor’s responsibility. Is this contextual query appropriate for this RFD, or should the adapter first define an optional extension? I am asking for a supported interface and clarification of its guarantees, without prescribing a method name, response schema, or timeout values. |
|
I think we've discussed this a bit, and a better approach will probably be to have a Since many of these values can resolve based on project configs, I think having the response be based on similar config as a session would make a lot of sense, but would also allow the client to know what would be available beforehand |
Summary
Proposal for allowing Agents to declare input options they accept for
session/newandsession/loadrequests, advertised inInitializeResultcapabilities.Uses MCP elicitation's JSON Schema format for defining input schemas, providing ecosystem consistency.
Key Design Decisions
InitializeResult.capabilities.sessions, enabling clients to show configuration UI before session creationnewSessionvsloadSessionoperationsWhy not pure elicitation?
We considered using MCP elicitation directly (server requests input after
session/new), but this has UX tradeoffs:By advertising schemas at init time, clients can build configuration UIs that feel native rather than reactive.
Related