You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a logical trust circle abstraction to AGT so a sub-agent can only KNOCK its parent and its same-circle siblings. Cross-circle data flow must traverse parents (the audit + policy boundary). Top-level peer agents ("main" agents) continue to interconnect freely.
This is an enhancement to defense-in-depth, not a from-zero security feature. We already have multiple layers — see Existing Controls below. What's missing is a logical boundary that ties a sub-agent's allowed peers to its parent's task scope.
Existing Controls (already shipped)
Per-sandbox NetworkPolicy — controller reconciles a NetworkPolicy per sandbox namespace. Direct pod→pod TCP between sandbox namespaces is blocked at the CNI layer; AGT traffic is forced through relay+registry in the agentmesh namespace. (controller/src/reconciler/mod.rs)
Egress-guard — sandbox pods drop UID 1000 to localhost+DNS only via iptables init container.
AGT KNOCK protocol — sessions only establish after a policy-gated KNOCK; handler in inference-router/src/handoff/mod.rs.
E2E encryption — Signal Protocol (X3DH + Double Ratchet); the relay never sees plaintext.
Per-agent identity binding — every AMID is cryptographically bound to its workload identity.
What's missing: trust score answers "is this peer verified?" but not "does this peer belong to your task?"
Proposed Enhancement: Trust Circles
A trust circle is the set of agents spawned (directly or transitively) under a single top-level task. Within a circle, peers may communicate freely. Across circles, only top-level peers may interconnect; sub-agents are circle-locked.
Communication matrix
Parent A SubA* Parent B SubB* External (A2A)
Parent A ✅ ✅ ✅ ❌ per-policy
SubA* (A's sub-tree) ✅ ✅ ❌ ❌ ❌
Parent B ✅ ❌ ✅ ✅ per-policy
SubB* (B's sub-tree) ❌ ❌ ✅ ✅ ❌
Cross-circle data flow: SubA1 → ParentA → ParentB → SubB1.
TL;DR
Add a logical trust circle abstraction to AGT so a sub-agent can only KNOCK its parent and its same-circle siblings. Cross-circle data flow must traverse parents (the audit + policy boundary). Top-level peer agents ("main" agents) continue to interconnect freely.
This is an enhancement to defense-in-depth, not a from-zero security feature. We already have multiple layers — see Existing Controls below. What's missing is a logical boundary that ties a sub-agent's allowed peers to its parent's task scope.
Existing Controls (already shipped)
NetworkPolicy— controller reconciles a NetworkPolicy per sandbox namespace. Direct pod→pod TCP between sandbox namespaces is blocked at the CNI layer; AGT traffic is forced through relay+registry in theagentmeshnamespace. (controller/src/reconciler/mod.rs)inference-router/src/handoff/mod.rs.AGT_TRUST_THRESHOLD(default 500 in sandboxes) gates all peer connections. Anonymous (score 0) rejected; verified Tier 1 GitHub OAuth (score 600+) passes.What's missing: trust score answers "is this peer verified?" but not "does this peer belong to your task?"
Proposed Enhancement: Trust Circles
A trust circle is the set of agents spawned (directly or transitively) under a single top-level task. Within a circle, peers may communicate freely. Across circles, only top-level peers may interconnect; sub-agents are circle-locked.
Communication matrix
Cross-circle data flow: SubA1 → ParentA → ParentB → SubB1.
Implementation Outline (multi-PR)
PR1 — circle_id plumbing
ClawSandboxCRD:spec.circleId(UUID) +spec.role(top-level|sub-agent) +spec.parentAmid(sub-agents only).CIRCLE_ID,AGENT_ROLE,PARENT_AMIDenv vars to the pod.@agentmesh/sdk+ registry: includecircle_idin registration metadata. (Vendor patch Build agentmesh image still fails - package-lock.json issue #19.)PR2 — KNOCK-time enforcement (the real gate)
Extend KNOCK policy in
inference-router/src/handoff/mod.rs:Reject before session establishment; emit a governance event so dashboards show denied attempts.
PR3 — discovery filtering + system-prompt reinforcement
discoverfilter:runtimes/openclaw/src/core/agt-task-loop.ts:83: add Trust Circle paragraph to the sub-agent system prompt.PR4 — parent-mediated cross-circle bridge (optional escape hatch)
request_cross_circle(target_role, message)— proxies through parent.cross_circle_request; parent decides whether to forward to ParentB.governancenamespace.PR5 — A2A interop (forward-looking)
When A2A ships, only top-level peers are externally reachable. Trust Circle becomes the unit that A2A "agent cards" map to.
Industry Alignment
Non-Goals
Risks & Mitigations
Acceptance Criteria
circle_idfield in CRD, plumbed through reconciler, registry, and KNOCK.discoverfilters results per requester role.Related
runtimes/openclaw/src/core/agt-task-loop.ts:83(in flight).vendor/agentmesh-sdk/README.md.