Repository navigation
Conversation
Add SubAgentToolBinding.isolation (Shared|Session). A Session subagent is invoked as an agent tool with its own session instead of sharing the parent conversation. Supported on kagent and BYO harnesses only; rejected with human approval and STS token exchange. Shared stays unset in compiled config so existing revisions are unchanged. Signed-off-by: Dmytro Rashko <dimetron@me.com>
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.
Part of #3674 (split out of the reference implementation in #3673).
What
Adds
SubAgentToolBinding.isolationtoAgentTemplate/Agent(v1alpha3):Shared(default / omitted)SessionSharedstays unset in the compiled ADK config, so existing revisions and digests do not change.Proto: new
ADKAgentIsolationenum (UNSPECIFIED,SHARED,SESSION) andADKAgentConfig.isolation = 20withdefined_onlyvalidation.Constraints (enforced in the translator and again in the Go ADK runtime)
Session; Codex and Claude reject it (Compatible=False,UnsupportedConfiguration).Sessionsubagent cannot pause for human approval: MCP bindings withrequireApprovalare rejected and it gets noask_usertool.Sessioncannot be combined with STS token exchange (the exchanged token is cached per session).Changes
make controller-manifests), proto + generated Go/Python (make proto-generate).validateSubAgentIsolation,adkconfig.ValidateSubAgentIsolation.Sessionchildren becomeagenttooltools; standalone checks.docs/architecture/a2a-subagents.md.Tests
go test ./api/v1alpha3/(CEL:Session/Shared/omitted accepted,Isolatedrejected) and./core/internal/controller/with envtest — passgo test ./core/internal/translator/... ./adk/pkg/...— pass (isolation delivery, digest stability, harness rejection, approval, STS)make -C go lint— 0 issues;make proto-lint,make proto-breakingvsupstream/main— passTestSubAgentIsolationValidationcompiles and vets; not run against a cluster locally.