NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4702 most downloaded on crates.io
A protocol for standardizing communication between code editors and AI coding agents
Last release 7 days ago
01 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of 59 stable releases
Nothing withdrawn
no release was ever pulled
12 months old
59 releases · first in 2025
(rust) remove skipped-entry deserialization logging
tracing feature remains available as a backwards-compatible no-op.(unstable) allow MCP response extensions
One column per month.
(unstable-v2) return available commands in session responses
(rust) accept null for defaultable payloads
(unstable-v2) return message ID on prompt insertion
(schema) stabilize tool call name
(unstable) add session compaction updates
(unstable-v2) add cancelled variant to tool call and plan item
(unstable-v2) add v2 semantic string types
(unstable) Add descriptions to elicitation enum options
*(schema)* Stabilize boolean session config options
*(schema)* Stabilize request cancellation
*(schema)* Stabilize model_config option category
*(unstable)* Add boolean config option capabilities
*(rust)* Expose v1 schema types only under v1 module
*(rust)* Move schema crate into workspace subdirectory
*(unstable-v2)* Add streaming tool-call content in v2
*(schema)* Stabilize optional message IDs
*(schema)* Experiment annotating lenient deserialize opportunities
*(unstable)* Add unstable plan operations
*(unstable)* Rename provider method types to singular
*(unstable)* Update additionalDirectories guidance
*(unstable)* Add unstable session delete support
*(unstable)* Add experimental MCP-over-ACP message types
### Added - Stabilize session/close (#1062) - Stabilize session/resume
*(unstable)* Remove RequiredNullable dead code
*(rust-only)* Remove unused RPC message schema types (schema.json unchanged)
*(unstable)* Initial implementation of providers
*(unstable)* Move elicitation scope into mode variants
*(unstable)* elicitation for session, tool call, and requests
*(unstable)* initial unstable nes implementation
*(unstable)* More robust schema for elicitation types
*(unstable)* Complete session/stop → session/close rename
*(unstable)* Remove unused auth_methods from Error type
*(unstable)* implementation for unstable session/stop
Stabilize Session Config Options
*(schema)* Add missing titles for enum variants in schema
*(unstable)* Add a category to session config options
*(unstable)* Make constructing SessionConfigSelects on the Rust side nicer
*(unstable)* Draft implementation of session config options
*(unstable)* add SessionInfoUpdate to SessionUpdate enum
*(unstable)* add cwd and mcp_servers to session/fork
*(unstable)* Draft implementation of $/cancel_request notification
This release mostly contains several nice quality-of-life improvements for the Rust version of the schema, as well as an unstable draft implementation
This release mostly contains several nice quality-of-life improvements for the Rust version of the schema, as well as an unstable draft implementation of session/fork for people to start trying out.
ErrorCode and add them to the docs (#301)Remove incorrect discriminator on McpServer type
McpServer type (#292)This release defines the _meta properties in the schema as intended and currently used, which is always an object of key/value pairs, with string keys
This release defines the _meta properties in the schema as intended and currently used, which is always an object of key/value pairs, with string keys and arbitrary values.
While this is how everyone is using them, it became clear in code generation that the types weren't quite matching up to the expected usage. This should alleviate some extra checks on the implementer side.
Rust: There are some breaking changes to the OutgoingMessage types and other low-level RPC types to make them generate clearer JSON schema representat…
Some follow-up changes from 0.7.0. Most of the changes were in the Rust schema to make things a bit easier to work with.
However, there were some further cleanups to the JSON schema to remove some $ref indirection where possible to have the schema be a bit flatter.
There are also some fixes that were causing issues with code generators related to Extension methods, these now have concrete types in the schema as well.
Rust: There are some breaking changes to the OutgoingMessage types and other low-level RPC types to make them generate clearer JSON schema representations. Likely these are only used by SDKs, but they moved to tuple enum variants.
Also, rather than having free-floating V0 and V1 constants, these are now associated constants on the ProtocolVersion type itself.
new methods for ExtRequest + ExtNotification (#271)NOTE: The Protocol version is already, and remains, `1`. This is just for the JSON Schema itself. There are no breaking changes to the protocol, we ju…
This is a big release as we move towards a v1.0 release of the JSON Schema.
This should be the final form, we just want to go through the motions of upgrading all of the SDKs to verify no further changes are needed.
NOTE: The Protocol version is already, and remains, 1. This is just for the JSON Schema itself. There are no breaking changes to the protocol, we just reworked the schema representation to be more compliant with code generation tooling for the various SDKs.
We also now have two variants of the schema attached to the release:
Stable
Unstable
As we have more RFD implementations in progress, this will allow us to iterate on the schema without requiring SDKs to churn through the changes.
For SDK authors, it is important if you use the unstable version, to make sure the unstable features are behind a flag of some kind with clear direction to your users about the state of these features. But this will also allow teams to start testing the unstable features and provide feedback to the RFD authors.
The Rust crate, agent-client-protocol-schema has major breaking changes. All exported type are now marked as #[non_exhaustive]. Since the schema itself is JSON, and we can introduce new fields and variants in a non-breaking way, we wanted to allow for the same behavior in the Rust library.
All enum variants are also tuple variants now, with their own structs. This made it nicer to represent in the JSON Schema, and also made sure we have _meta fields on all variants.
This upgrade will likely come with a lot of compilation errors, but ideally upgrading will be more painless in the future.
Add discriminator fields to the schema.json for tagged enums to aid with code generation in language tooling.
discriminator fields to the schema.json for tagged enums to aid with code generation in language tooling.Fix incorrectly named _meta field on SetSessionModeResponse
Fix incorrectly named _meta field on SetSessionModeResponse
Make Implementation fields public
Implementation fields publicAdd ability for agents and clients to provide information about their implementation https://github.com/agentclientprotocol/agent-client-protocol/pull
JSON Schema: More consistent inlining for enum representations to fix issues with code generation in language tooling.
_meta fields on certain enum variants.Make id types easier to create and add PartialEq and Eq impls for as many types as possible.
PartialEq and Eq impls for as many types as possible.Export Result type with a default of acp::Error
Result type with a default of acp::Error- Fix schema publishing
- Fix publishing
Schema uploaded to GitHub releases
Fix: support all valid JSON-RPC ids (int, string, null)
Your coding agent can read these notes before it upgrades. Set up the MCP server →