microsoft / microsoft/agent-host-protocol
Consider a lightweight progress content block for streaming non-terminal-backed shell output
@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
ToolResultTerminalContentimplies 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
previewinTerminalComplete, 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 —
ToolResultShellProgressContentvsToolResultTerminalProgressContentvs something else — depends on whether we want this to read as shell-specific or as part of the same terminal-content family asToolResultTerminalContent/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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.