Skip to content

RFD: Client-Provided System Prompt#1237

Open
wpfleger96 wants to merge 1 commit into
agentclientprotocol:mainfrom
wpfleger96:rfd/client-system-prompt
Open

RFD: Client-Provided System Prompt#1237
wpfleger96 wants to merge 1 commit into
agentclientprotocol:mainfrom
wpfleger96:rfd/client-system-prompt

Conversation

@wpfleger96
Copy link
Copy Markdown

Proposes adding an optional systemPrompt string field to session/new, giving clients a standard way to provide system-level instructions that agents can deliver to the LLM's system prompt slot.

ACP is currently the only major agent protocol without a dedicated system prompt field — MCP, OpenAI, and Anthropic's Messages API all have one. Every ACP implementation has independently implemented non-standard workarounds: _meta extensions, user-message injection, filesystem indirection. This RFD proposes a single interoperable solution.

  • Adds systemPrompt?: string to SessionNewParams — additive, fully backward compatible
  • Agents that don't read the field continue working unchanged
  • Mid-session updates deferred to a future session/update_system_prompt method if needed

Motivated by Discussion #414.

@wpfleger96 wpfleger96 marked this pull request as ready for review May 18, 2026 16:44
@wpfleger96 wpfleger96 requested a review from a team as a code owner May 18, 2026 16:44
@wpfleger96 wpfleger96 force-pushed the rfd/client-system-prompt branch from b93753b to 68a1067 Compare May 18, 2026 19:14
Comment thread docs/rfds/client-system-prompt.mdx Outdated
### Agent behavior

When an agent receives a `systemPrompt`:
- It SHOULD use the content as the LLM's system prompt (or incorporate it into its system prompt construction)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be clear that its always additional to existing system prompt so its a clear set of additional instructions vs replacing the System Prompt.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great catch, I think you're right this needs to be cleaner. I just pushed a change to the RFD to clarify that systemPrompt uses additive semantics - the client system prompt is incorporated alongside the agent's own built-in instructions, it doesn't replace them. Agents always retain their own identity, safety guardrails, and internal configuration.

the updated Design Choices and Agent Behavior sections should make this explicit now. thanks for flagging it!

@wpfleger96 wpfleger96 force-pushed the rfd/client-system-prompt branch from 68a1067 to 3cf1268 Compare May 19, 2026 00:12
@alexhancock
Copy link
Copy Markdown
Contributor

I think it's good

One bit of feedback that comes to mind: if it is to remain a "SHOULD" for agents to thread it to the llm's system prompt slot, it may be good for the client to know if the agent is ignoring it.

Two solutions:

  1. Consider making it a MUST for the agent to attempt to handle it
  2. Make some kind of notification or value that comes back on the session/new response indicating to the client whether it is being used with the llm

Number 2 may also be needed for error cases where the system prompt couldn't be inserted into a facility for this on the llm side.

@wpfleger96 wpfleger96 force-pushed the rfd/client-system-prompt branch from 3cf1268 to 4e4a566 Compare May 19, 2026 20:58
@wpfleger96
Copy link
Copy Markdown
Author

@alexhancock thanks for the feedback! I agree with both and just pushed an update with these changes:

  • upgrade from SHOULD to MUST for incorporating the system prompt. I couldn't find any real-world use cases where an ACP agent couldn't/wouldn't honor a system prompt so giving clients a stronger guarantee with MUST feels right here
  • add systemPromptStatus field on the session/new response: it returns accepted or rejected (with a reason) so clients know whether their system prompt addition was used or not. This covers the error cases you mentioned and if the client doesn't send a systemPrompt, the field is omitted from the response

@wpfleger96 wpfleger96 force-pushed the rfd/client-system-prompt branch from 4e4a566 to 2331a57 Compare May 19, 2026 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants