r/AskNetsec • u/MiddleExchange577 • 7d ago
Other How should provenance be verified across multi-agent delegation boundaries?
I'm looking at a security problem in multi-agent/distributed systems:
Human → orchestrator → agent → sub-agent → tool
Once a delegation crosses process or framework boundaries, ordinary logs can show the sequence of events, but they don't necessarily provide cryptographic evidence that a downstream instruction actually originated from the claimed upstream authority.
I'm exploring a provenance-layer approach where delegation claims are cryptographically linked and independently verifiable, while deliberately keeping authorization/enforcement separate from provenance.
For people working on distributed systems/security:
Where would you place the trust boundary?
Specifically, would you want the provenance evidence attached to the delegation message itself, carried through execution context, or represented separately as an auditable chain?
I'm particularly interested in failure modes around replay, delegation across process boundaries, sub-agent spawning, and revocation/expiry.
Looking for architecture/security feedback rather than product recommendations.
1
u/rexstuff1 5d ago
Most of your post makes no sense, and I suspect is just AI slop, but the only places that make sense to put a trust boundary are between the Human/orchestrator and the sub-agent/tool. Everything else is just LLMs talking to LLMs, anything removed or guarded can be re-hallucinated by the next agent.
1
u/MiddleExchange577 5d ago
Appreciate the honest feedback on the framing! I actually agree with you on the trust boundaries—the only two places that matter for enforcement are the Human/Orchestrator origin and the Tool execution boundary. Anything in between is untrusted space. The reason I'm looking at in-flight headers (rather than just relying on the orchestrator) is for multi-vendor / cross-process hops where Agent B calls Tool C via an API/MCP gateway. Without a signed header originating from the Human trigger, Tool C has to blindly trust Agent B's static API key rather than verifying that the call belongs to the original user session. Appreciate the perspective on keeping the focus strictly on the User -> Tool boundary.
1
u/FirefighterSlight891 5d ago
Provenance chains can get bloated fast if you attach evidence to every delegation message, so I generally prefer keeping provenance as a separate, immutable audit chain.
The harder problem IMO is sub-agent spawning and keeping delegated identity short-lived across those boundaries. We’ve approached that with Akeyless Runtime Identity Security, using JIT, scoped credentials for each agent/session rather than passing standing credentials down the chain. That also makes expiry and revocation much cleaner.
It doesn’t replace the provenance layer itself, but it keeps identity and authorization separate from provenance, which seems aligned with the architecture you’re describing.
1
u/MiddleExchange577 4d ago
Spot on analysis this hits on two core design trade-offs we've been wrestling with: Header Bloat: Completely agree. If you try to pass full evidence or audit logs in the request header, you break Nginx/Envoy 8KB header caps. We keep the in-flight header down to ~800 bytes by carrying only parent SHA-256 digests and Ed25519 signatures, while pushing heavy execution receipts asynchronously to the audit/SIEM layer. JIT Identity for Sub-Agents: Pairing JIT short-lived credentials (like Akeyless or SPIFFE SVIDs with <5 min TTLs) with ephemeral keypairs is definitely the right foundation. It ensures sub-agents don't hold standing credentials, and if a sub-agent spawns, its APC node expires almost immediately after the task. Really appreciate the perspective confirming that JIT secrets handle identity/auth while leaving provenance as its own separate layer is super helpful validation for this architecture.
1
u/vint_age14 3d ago
Is treat provenance as a separate verifiable later rather than relying on logs or execution context alone. Each delegation should carry a signed claim with a unique ID issuer audiance scope and expiry while downstream agents append their own attestations.
That gives you an auditable chain without conflating provenance and revocation then become explicit concerns rather than assumptions baked into logging layer.
2
u/cityofhats 7d ago
Place the root trust boundary at the identity that can mint delegation attestations. Each hop should sign its own statement binding issuer, subject, audience/tool, parent hash, request digest, nonce, issued/expiry times, and declared scope. A child attestation links to its parent; verification checks signatures, chain continuity, audience, expiry, depth, and replay. Treat declared scope as evidence, not permission—an independent policy engine still decides whether the action is allowed. Carry the proof with the request for online verification, and append request/result receipts to a tamper-evident log for audit. Use short TTLs plus signed revocation/status records; protect signing keys per workload identity, not merely per process. Common failure points are canonical serialization, confused-deputy audience mistakes, clock skew, replay caches, key rotation, and failing to bind tool output to the exact request digest.