microsoft / microsoft/agent-host-protocol

Consider a lightweight progress content block for streaming non-terminal-backed shell output

Open
#323 0 comments 0 reactions 1 assignee View on GitHub

@anthonykim1 is already working on this.

Since Jul 8, 2026.

Dominant language
TypeScript
Stars
348
Forks
122
Avg merge
14h 12m
Merged PRs (30d)
22

Description

Follow-up from #314, discussion thread: https://github.com/microsoft/agent-host-protocol/pull/314#discussion_r3540133509

Rob asked whether shell exit content should be separated so terminal output can stream. We resolved this for the case where a full ahp-terminal: channel backs the command: a host emits a live ToolResultTerminalContent block while it runs, then a ToolResultTerminalCompleteContent block referencing the same resource when it exits.

That doesn't cover the lighter case — a plain shell child process with no subscribable terminal channel. There's currently no way for a host to stream partial output/progress for that kind of execution before the final TerminalComplete summary lands.

Problem

  • ToolResultTerminalContent implies a full terminal channel (cols/rows, command detection, etc.) — heavier than some shell tools want just to report incremental output.
  • Non-terminal-backed shells only get one shot: the final preview in TerminalComplete, after the command has already exited.

Proposal (not fully speced yet)

  • A lighter content type for incremental output from a running command that isn't backed by a full terminal channel. Naming isn't settled — ToolResultShellProgressContent vs ToolResultTerminalProgressContent vs something else — depends on whether we want this to read as shell-specific or as part of the same terminal-content family as ToolResultTerminalContent/ToolResultTerminalCompleteContent.
  • Needs to stay clearly distinct from ToolResultTerminalCompleteContent, which is specifically the post-exit record.

Sequencing

We should land #322 (PTY / non-PTY capability detection) before this. Once clients can tell whether an execution is PTY-backed vs a plain child process, that same signal likely informs whether/how a progress block should behave — don't want to design streaming semantics twice.

Related

  • #314 — where this was raised and partially resolved (terminal-backed case)
  • #322 — capability detection for PTY vs non-PTY terminal execution (should land first)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.