Receiving-side delegation guard
FreshCtx + A2A delegation guard
Wrap an official A2A Python SDK AgentExecutor with FreshCtxA2AExecutor to verify a bounded delegation receipt and revalidate evidence before delegated work begins.
What FreshCtx protects
The receiver verifies the signed delegation receipt, recomputes the application-selected action-intent digest, and revalidates its declared evidence immediately before the wrapped executor starts.
Where the pre-action boundary sits
The boundary is the receiving side of A2A. Missing, malformed, expired, tampered, wrong-recipient, replayed, or intent-mismatched receipts produce a native rejected task update, as does STALE_REASONING or UNVERIFIABLE evidence.
Limitations
- Every receiving hop revalidates its own declared evidence; correlation IDs do not re-anchor or revoke a whole chain.
- Bounded retries and the circuit breaker limit waiting; they never convert uncertainty into permission.
- The in-memory replay store is process-local; cross-process protection requires SQLiteDelegationReplayStore or an equivalent atomic consume contract.
Installation
python -m pip install 'freshctx[a2a]==0.16.0'Minimal example
guarded = FreshCtxA2AExecutor(
executor,
receiving_agent="payments-agent",
depends_on=[approval_decision],
store=store,
key_resolver=resolve_process_local_key,
replay_store=SQLiteDelegationReplayStore(".freshctx/a2a-replay.sqlite3"),
)Continue
Third-party names and logos are trademarks of their respective owners. Their appearance identifies compatible integration surfaces and does not imply endorsement or partnership.