spec/v0.5.2
microsoft/agent-host-protocolspec/v0.5.2Jul 9, 2026by github-actions[bot]
Upgrading?
Release notes summary
Defines the protocol spec for AHP 0.5.2, establishing resource request handling, terminal content support, and input request persistence.
Key Highlights
- Resource request handling for both sending and receiving via the host.
- Input request persistence in `responseParts` on `chat/inputCompleted`.
- Actions for clients to request MCP server start or stop.
New Features
- Optional `enabled` flags on child customizations.
- Optional `_meta` provider metadata on all customization types.
- Optional `terminalCommandPrefix` on `InitializeResult`.
Full Release Notes
## [0.5.2] — 2026-07-09
Spec version: `0.5.2`
### Added
- `ToolResultTerminalCompleteContent` for terminal-style completion metadata in tool
results.
- Optional `enabled` flag on the child customizations (`AgentCustomization`,
`SkillCustomization`, `PromptCustomization`, `RuleCustomization`,
`HookCustomization`) so an individual child can be turned off independently of
its container; absent means enabled.
- `disableUserInvocation` on `SkillCustomization`, plus `disableModelInvocation`
and `disableUserInvocation` on `AgentCustomization`, giving custom agents and
skills a symmetric user/model invocation matrix.
- Optional `reviewed` field on `ChangesetFile`. Omitting it (or setting it to
`undefined`) signals that the server does not support the file "review"
functionality.
- `changeset/filesReviewedChanged` action for servers to update the `reviewed`
flag of one or more changeset files.
- Hoisted the optional `_meta` provider-metadata slot from `AgentCustomization`
up to the shared `CustomizationBase`, so every customization type
(`PluginCustomization`, `ClientPluginCustomization`, `DirectoryCustomization`,
`SkillCustomization`, `PromptCustomization`, `RuleCustomization`,
`HookCustomization`, and `McpServerCustomization`) now carries the same
provider-specific escape hatch. Wire-compatible: `AgentCustomization` still
exposes `_meta`, now by inheritance.
- Optional `serverInfo` on `InitializeResult` and `clientInfo` on
`InitializeParams`, each an `Implementation` (`name`, optional `version`,
optional `title`), so either side of the handshake can identify its
implementation and build. Informational only — mirrors LSP/MCP and MUST NOT
be used for feature detection.
- `InputRequestResponsePart` (`kind: 'inputRequest'`) — a new `ResponsePart`
variant that records a resolved input request in a turn's transcript. On
`chat/inputCompleted`, the reducer now appends this part (embedding the
resolved `ChatInputRequest` with its final `answers` and the `response`:
`accept`, `decline`, or `cancel`) to the active turn's `responseParts`, so an
elicitation's outcome persists durably, mirroring how a resolved tool-call
confirmation is retained. Requests abandoned by turn end, cancel, error, or
truncation still record nothing (#324).
- Optional `terminalCommandPrefix` marker on `InitializeResult` for hosts that
support interpreting `!`-prefixed user messages as terminal commands.
- Optional `version` field on `PluginCustomization` (inherited by
`ClientPluginCustomization`), carrying the plugin's semver sourced from the
Open Plugins manifest's optional `version`. Provenance / display only; absent
when the manifest declares no version or the source has no version concept.
- `session/mcpServerStartRequested` and `session/mcpServerStopRequested`
actions for clients to ask the host to start or stop MCP servers; stopping
moves an `authRequired` server to `stopped` so it no longer waits on
authentication.
### Changed
- `session/customizationToggled` now targets any top-level customization
(`plugin`, `directory`, or top-level `mcpServer`) or an individual child by
`id` and sets that entry's `enabled`; the effective state of a child is
`container.enabled && (child.enabled ?? true)`.
### Fixed
- The generated JSON Schema artifacts (`schema/*.json`) are now self-contained
and strict-`oneOf`-safe. The generator no longer emits an empty `{}` branch in
a union type alias's `oneOf` (which matched any value and defeated strict
`oneOf` validation), backfills the `enum`, enum-member, and type-alias `$ref`s
that were previously dangling across all five schema files, and renders `null`
members as `{ "type": "null" }` (#302).
Related Repositories
openclaw/openclaw★ 392,873
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
morluto/rea★ 372,577
Reverse engineer anything with agents, from app behavior down to native binaries.
nilbuild/developer-roadmap★ 370,231
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
anomalyco/opencode★ 220,569
The open source coding agent.
n8n-io/n8n★ 208,401
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.