All notable changes to the protocol specification are documented here. The
spec is versioned independently from the per-language client libraries; see
each clients/<lang>/CHANGELOG.md for client release history.
The format is based on Keep a Changelog
and the spec follows SemVer. Until 1.0.0 is reached,
breaking changes may land in MINOR bumps (see
docs/specification/versioning.md).
Each released entry includes a Spec version line that exactly matches the
PROTOCOL_VERSION constant in types/version/registry.ts
at the time of release. The publish-spec.yml workflow refuses to publish a
spec/vX.Y.Z tag whose matching ## [X.Y.Z] heading is missing from this
file.
The next spec release will be cut from main once breaking or notable additive
changes accumulate. Track in-flight protocol changes via PRs touching
types/ and the per-symbol ACTION_INTRODUCED_IN /
NOTIFICATION_INTRODUCED_IN maps in
types/version/registry.ts.
Spec version: 0.3.0
- Renamed the
UserMessagetype toMessageand surfaced it consistently across turn state (Turn.message,ActiveTurn.message,PendingMessage.message) and the actions that carry it (session/turnStarted,session/pendingMessageSet). The type now carries anoriginfield and an optional_metaobject.
Spec version: 0.2.0
This is the first version released through the unified spec release pipeline
(spec/v* git tags → GitHub Release with attached schema artifacts). Changes
to the protocol shape that landed under this version are tracked in the
commits between spec/v0.1.0 (not yet tagged) and spec/v0.2.0. Highlights:
- Channels reorganization — every command and notification carries a top-level
channel: URI; per-channel state types and action unions live undertypes/channels-*/(see PR #97 and PR #152). - New
otlp/*notifications for telemetry export (exportLogs/exportTraces/exportMetrics). - New
session/agentChanged,session/customizationRemoved,session/changesetsChanged, and thechangeset/*action family. - Customizations redesigned as a typed two-level tree.
- New
resourceResolve(stat + realpath; throwsNotFoundfor the existence check) andresourceMkdir(mkdir -psemantics) requests. - New
createResourceWatchrequest plus theahp-resource-watch:/<id>channel with theresourceWatch/changedaction — long-lived file-change streams over the standard subscription mechanism. resourceWriteextended withmode(truncate|append|insert),position, andifMatchfor optimistic concurrency. NewConflict(-32011) error code for staleifMatchwrites.- The entire content-bearing
resource*family is now formally bidirectional — the methods appear inServerCommandMapand may be initiated by either peer (matches VS Code's existing implementation). UserMessage._metaoptionalRecord<string, unknown>field for provider-specific message metadata, mirroring the MCP_metaconvention already used onMessageAttachmentBase,ToolDefinition,ToolCallBase,UsageInfo, andSessionState.
Spec version: 0.1.0
Initial public protocol surface. Not retroactively tagged; this entry exists
for completeness so that the 0.2.0 diff is unambiguous.