← back to AbramsEgo
TK-10381: extend smoke.sh with A2A security-gate assertions (allowlist empty=zero egress, unlisted-agent refused, payload linter armed) — regression net for the shipped gate
bf1723b6bdabe73a392dcc3c7254a4faec42807d · 2026-08-09 11:59:45 -0700 · Steve
Files touched
Diff
commit bf1723b6bdabe73a392dcc3c7254a4faec42807d
Author: Steve <steve@designerwallcoverings.com>
Date: Sun Aug 9 11:59:45 2026 -0700
TK-10381: extend smoke.sh with A2A security-gate assertions (allowlist empty=zero egress, unlisted-agent refused, payload linter armed) — regression net for the shipped gate
---
scripts/smoke.sh | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/scripts/smoke.sh b/scripts/smoke.sh
index bb26e70e..6f21301e 100755
--- a/scripts/smoke.sh
+++ b/scripts/smoke.sh
@@ -62,3 +62,27 @@ if (d['localFleet'] or {}).get('error') is not None:
print(f"PASS — 200 auth, 14 keys, crons {len(jobs)}, providers {len(prov)}, "
f"canaries {len(cans)} all-verdict, localFleet clean")
PY
+SMOKE_RC=$?
+[ "$SMOKE_RC" = "0" ] || exit "$SMOKE_RC"
+
+# --- A2A security gate (TK-10381) — the activation gate MUST hold ------------
+# The A2A client can consult EXTERNAL agents; these assertions prove the feature
+# ships OFF and safe: empty allowlist = zero egress possible, and the payload
+# linter keeps secrets from ever leaving. If any of these fail, the gate has
+# regressed (someone opened the allowlist or dropped the linter) — investigate.
+
+A2A_AGENTS=$(curl -s -m 8 -u "$AUSER:$APASS" "$BASE/api/a2a/agents")
+echo "$A2A_AGENTS" | grep -q '"agents":\[\]' || {
+ echo "FAIL a2a_allowlist_empty — expected empty allowlist (gate open?), got: $A2A_AGENTS"; exit 1; }
+
+A2A_REFUSE=$(curl -s -m 8 -u "$AUSER:$APASS" -X POST -H 'Content-Type: application/json' \
+ -d '{"agent":"__smoke_nobody__","q":"ping"}' "$BASE/api/a2a/consult")
+echo "$A2A_REFUSE" | grep -q 'not in allowlist' || {
+ echo "FAIL a2a_gate_refuses_unlisted — expected 'not in allowlist', got: $A2A_REFUSE"; exit 1; }
+
+A2A_LINT=$(curl -s -m 8 -u "$AUSER:$APASS" -X POST -H 'Content-Type: application/json' \
+ -d '{"agent":"__smoke_nobody__","q":"my ANTHROPIC_API_KEY=sk-ant-smoke"}' "$BASE/api/a2a/consult")
+echo "$A2A_LINT" | grep -q 'payload blocked' || {
+ echo "FAIL a2a_payload_linter — expected 'payload blocked', got: $A2A_LINT"; exit 1; }
+
+echo "PASS a2a — allowlist empty (gate holds, zero egress), unlisted agent refused, payload linter armed"
← 727747cb auto-data-snapshot: 2026-08-09T11:49:56 (1 data files) — dat
·
back to AbramsEgo
·
auto-data-snapshot: 2026-08-09T12:20:46 (1 data files) — dat c95c477d →