spec/v0.5.0

microsoft/agent-host-protocolspec/v0.5.0Jun 26, 2026by github-actions[bot]

Upgrading?

Release notes summary

Defines the protocol spec for AHP 0.5.0, establishing multi-client sessions, progress tracking, and the new `SessionState` structure.

Key Highlights

  • Multi-client support via `SessionState.activeClients` array.
  • Generic progress notifications (`root/progress`) with `progressToken`.
  • Flattened session state structure.

Breaking Changes

  • Renamed `session/activeClientChanged` to `session/activeClientSet`.
  • Removed `session/activeClientToolsChanged`.
  • `ConfigPropertySchema.enum` now accepts `JsonPrimitive[]` instead of `string[]`.

New Features

  • Optional `progressToken` on `createSession`.
  • Optional `SessionSummary._meta` for session presentation hints.
  • New `JsonPrimitive` type alias.

Full Release Notes

## [0.5.0] — 2026-06-26

Spec version: `0.5.0`

### Added

- `chat/activityChanged` action for updating a chat's current activity
  description independently of the session summary.
- `root/progress` (`ProgressParams`) generic host→client progress notification,
  correlated by a `progressToken` the client supplies on the originating
  request (today `createSession.progressToken`) rather than a domain object. Lets
  the host report long-running work — e.g. the lazy first-use download of an
  agent's native SDK — so clients can show an indicator instead of a silent
  multi-second hang. Carries monotonic `progress` and optional `total`; complete
  when `progress === total`.
- `createSession.progressToken` optional opt-in token for receiving `root/progress`
  notifications about a session's bring-up.
- `SessionModelInfo.maxOutputTokens` and `SessionModelInfo.maxPromptTokens`
  optional fields for communicating model token limits.
- `SessionSummary._meta` optional provider metadata field for lightweight
  session-list presentation hints.
- `JsonPrimitive` type alias (`string | number | boolean | null`) in `types/common/state.ts`.
- `session/activeClientRemoved` action to release a single active client from a
  session by `clientId`.

### Changed

- `ConfigPropertySchema.enum` now accepts `JsonPrimitive[]` instead of `string[]`, allowing numeric, boolean, and null enum values.
- `ModelSelection.config` values are now `JsonPrimitive` (`string | number | boolean | null`) instead of `string`, allowing numeric, boolean, and null configuration values.
- `SessionState.activeClients` (a required array, keyed by `clientId`) replaces
  the single optional `SessionState.activeClient`. A session may now have
  multiple concurrent active clients.
- `session/activeClientChanged` is renamed to `session/activeClientSet` with
  upsert-by-`clientId` semantics. It no longer accepts `null` to unset the
  active client — dispatch `session/activeClientRemoved` instead.

### Removed

- `session/activeClientToolsChanged`. An active client now updates its published
  tools by re-dispatching `session/activeClientSet` with its full, updated entry.

### Fixed

- Corrected the `ACTION_INTRODUCED_IN` entries for `annotations/set`,
  `annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
  from `0.3.0` to `0.4.0`. The annotations channel first shipped in the
  `0.4.0` spec release (it is absent from `spec/v0.3.0`), so version
  negotiation must not advertise it to peers speaking `0.3.0`.

Related Repositories