feat(harness): human-in-the-loop and pause actor on input-required - #2714
Open
supreme-gg-gg wants to merge 14 commits into
Open
feat(harness): human-in-the-loop and pause actor on input-required#2714supreme-gg-gg wants to merge 14 commits into
supreme-gg-gg wants to merge 14 commits into
Conversation
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
…required Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
supreme-gg-gg
force-pushed
the
jetc/feat/harness-hitl
branch
from
September 4, 2026 21:48
7eb2cd1 to
2bd5a0d
Compare
Contributor
Author
|
Some demo with Claude (first) and Codex (second), ADK behaviour is similar: claude.mp4codex.mp4 |
Signed-off-by: Jet Chiang <pokyuen.jetchiang-ext@solo.io>
supreme-gg-gg
marked this pull request as ready for review
September 4, 2026 22:49
supreme-gg-gg
requested review from
a team,
Charlesthebird and
peterj
as code owners
September 4, 2026 22:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds end-to-end HITL support for the ADK, Codex, and Claude Code harnesses running on Substrate. When a task enters
input-required, Kagent pauses the Actor so the worker can be released while preserving the live runtime state needed to continue the same turn.Key changes
AgentTemplate.spec.tools[].mcp.requireApproval.input-requiredand continues to suspend them at terminal task boundaries.permission-prompt-tool.Pausing
Input waits use Substrate
Pauserather thanSuspend. Pause preserves aFULLsnapshot, including process memory, which is required for harnesses such as Codex and Claude that retain a live process while awaiting input. The paused snapshot is kept on node-local storage instead of object storage, reducing network overhead while the worker is released.Terminal task boundaries still use Suspend with
DATAsnapshots.AgentTemplateAPI for tool approvalApproval is configured on an MCP binding:
requireApprovalapplies to every tool selected by that binding, or every tool on the server whentoolsis omitted. The API represents mixed protected and unprotected tool sets from one server as separate bindings, keeping selection and approval policy together. Partially completes #2688ADK supports that split today. Codex and Claude currently reject duplicate bindings to the same
RemoteMCPServer; Claude also exposes the whole server when partial tool selection cannot be enforced and reports a warning.HITL coverage
The following flows are supported and tested:
Claude ask-user is not supported because the upstream Claude Code tool was removed. I will probably add this as a follow-up.
Permission mode
Configurable native permission modes for Codex and Claude are out of scope. Both harnesses continue to run with unrestricted native sandbox permissions because Substrate is the sandbox boundary. Built-in tools such as file access, shell, web search, and other MCP tool calls not marked with
requireApprovalwill generally be auto-approved.