Trust Model
- The Agent runs with whatever permissions its process is given. ACP itself does not sandbox it.
- Files, web pages, tool results, and MCP servers can influence Agent output. Treat every Agent-authored string, URI, and path as untrusted, including replayed content.
- Permission requests are advisory: the Agent performs operations and is responsible for honoring the user’s decision. A Client cannot prevent an operation the Agent performs without asking.
infoininitializeis self-reported. Implementations SHOULD NOT use it for security decisions, and Clients SHOULD identify the Agent from their own launch configuration.
Rendering Agent Content
This applies to all Agent-authored display text, including messages, thoughts, tool calls, plans, commands, config options, notices, session titles, authentication methods, permission requests, and elicitations.- Clients SHOULD NOT run scripts from Agent content, and SHOULD disable or sanitize raw HTML when rendering Markdown.
- Clients SHOULD NOT automatically run active content, such as diagram renderers, that can fetch resources or execute code.
- Clients SHOULD NOT open links from Agent content without user action, and SHOULD show the full target and get user confirmation before handing a link with a scheme other than
httporhttpsto the operating system or another handler. - Clients SHOULD show the full link target when it differs from the link text.
- Clients SHOULD reveal or remove bidirectional, zero-width, and tag characters in commands, paths, URLs, diffs, and permission requests.
- Clients that print Agent text to a terminal SHOULD neutralize terminal control sequences in it.
- Clients SHOULD keep Agent slash commands distinguishable from their own commands.
- Clients MAY bound or throttle permission requests, elicitations, and output.
URIs and Remote Resources
This applies touri on images, resource links, and embedded resources, to icon src, and to URLs in Markdown.
- Clients SHOULD render images from
dataand SHOULD NOT fetch Agent-supplied remote URIs without user action. A request can leak data through its URL. - Automatic fetches SHOULD use only
https:ordata:URIs, SHOULD NOT carry credentials, SHOULD refuse loopback and private-network targets, and SHOULD bound the response size. - Clients SHOULD NOT run scripts in SVG images from Agent content.
- Clients SHOULD NOT read a
file:URI from Agent content outside the session’s root set without user action. - Agents SHOULD apply the root set and these fetch rules to URIs in prompts.
Credentials
- Implementations SHOULD NOT put credentials in
_meta, includingtraceparent,tracestate, andbaggage. Preserving unknown values does not require storing or replaying credentials. - Session, message, tool-call, and terminal IDs are not credentials.
Prompt Injection
- Agents SHOULD treat embedded resources, files, tool results, and MCP results as data, not as user instructions.
- Agents SHOULD request permission before sending data off the machine after reading untrusted content.
- Agents SHOULD request permission before writing files that control execution or approval, such as version-control hooks, editor or Agent settings, and MCP configuration.
- Clients SHOULD NOT open links, run commands, change settings, or send data based only on Agent-authored text.
Intermediaries
- An intermediary between the Client and the Agent, such as a proxy, can read and change every message, and each side treats it as the other. Clients SHOULD only use intermediaries the user trusts.
- Intermediaries SHOULD NOT answer permission requests or elicitations for the user except under user-configured policy, and SHOULD forward
subjectunchanged. - An Agent serving more than one user SHOULD scope
session/list,session/resume, permission requests, and elicitations to the user that owns the session.
Transports
Custom transports SHOULD document their security considerations, including how peers authenticate.Feature Guidance
- Workspace roots
- Terminal authentication
- MCP servers
- Permission requests
- Display-only terminals and diffs
- Elicitation and URL security