Aperion Smartflow Docs — Smartflow 1.20 "Halo" ships today. Image v1.7.90 · Dashboard v1.9.31. Browse all docs →
Release · August 2026

Smartflow 1.20 “Halo”

Pin the tools  ·  Break the chain  ·  Bind the human
MCP Supply-Chain Integrity Cross-Tool Chain Deny Regulated IAL2-Fresh Examiner Pack
1.10 "Optimize" proved what the gateway costs. 1.20 is the security counterpart: it defends the two surfaces most gateways still treat as trusted — the MCP tool catalog and the sequence of tool calls inside a single agent turn — binds an agent to a verified human, and makes all of it one sealed, exportable record. Everything here is default-off or additive at the enforcement level unless noted, so upgrading the image does not change traffic behavior until you turn a knob.
MCP Supply Chain
1
TOFU Catalog Pinning & Rug-Pull DetectionNEW
tools/list

The proxy used to inspect tools/call and treat tools/list as trusted context. It no longer does. On first contact the (name, description, inputSchema) of every tool is hashed and pinned (trust on first use). Every later tools/list is compared to the pin — a changed hash is a rug-pull, and the pin stays authoritative until an admin re-pins.


Pins persist in Redis (mcp:pins:<server_id>) with an in-memory fallback so a single-node box still gets rug-pull protection within a process lifetime. Enforcement is controlled by MCP_SUPPLY_CHAIN (quarantine default — drop the offending tool from the returned list; warn; off).

  • Admin: GET /api/mcp/pins/{server_id} reports pin state
  • Admin: POST /api/mcp/pins/{server_id}/repin clears pins after a reviewed change
  • Dashboard: new MCP Integrity tab surfaces pin status + re-pin
Unlocks

A malicious or compromised MCP server can no longer silently change an approved tool's behavior or schema after the fact. The same rule bundle runs on the Shield laptop client and the cluster, so a description hashed on a developer's Mac and on the cluster produce the same pin.

2
Tool-Description Poison Scan
tools/list
Every tool description is scanned for instructions aimed at the model rather than the user — hidden-instruction / override, exfil directives, tool-shadowing, fake system/role framing, and invisible / control unicode (Invariant-class tool poisoning). A hit is stamped and, under quarantine, the tool is dropped from the list before an agent ever sees it.
Cross-Tool Attack Chains
3
Chain & Taint Deny — secret → egressNEW
tools/call

Allow-listing tools one at a time misses the exfil that lives in the sequence: read_file (touches a secret) then http_post (egress) in the same turn — each call looks fine on its own. A short, turn-scoped ledger classifies each tool and tracks tainted values by hash only, never the raw secret.

Taint edge
secret → egress
Fires when an egress/messaging tool's arguments carry a secret seen earlier in the turn. Built in, active unless off.
Ordered sequence
class chains
Flags known-bad ordered subsequences of tool classes (read / write / egress / messaging / other) within a turn.

Enforcement via MCP_CHAIN_POLICY: enforce (deny, sealed into the chain), warn (default — stamp + log), off. Sequences are authored in the shared bundle; MCP_CHAIN_SEQUENCES overrides.

Unlocks

The classic two-step agent exfil — read a secret with one tool, send it with the next — is caught at the gateway, correlated by hash so the secret value itself never enters the audit trail.

Agent Identity
4
Regulated Profile — Agent ⊂ IAL2-Fresh HumanNEW
A2A + MCP egress

On the regulated profile an agent can only act for a human proofed at IAL ≥ REGULATED_MIN_IAL (default 2 — the ID.me IAL2 tier) no older than REGULATED_MAX_AGE_SECONDS (default 900) before A2A or MCP egress. Missing, forged, expired, stale, or below-floor is a hard deny, sealed into the audit chain. Activate with SMARTFLOW_PROFILE=regulated.


The claims travel in the agent credential's metadata (principal_ial, principal_proofed_at), so no schema migration is required, and the AgentCard gains an optional principal binding.

Unlocks

Delegation + freshness + evidence in one check — "was a real, recently-verified human behind this agent action?" — which a path-based access list structurally cannot express.

One Bundle, One Sealed Chain
5
One Bundle Drives Both Seams
Policy
The MCP poison rules and chain sequences now live in the same config/shieldset.yaml Shield already loads, under shieldset.supply_chain and shieldset.chain_policy. A shared loader compiles them once. Edit one file and the Shield laptop client and the cluster gateway move together; a rules-only bundle falls back to compiled defaults so nothing regresses.
6
Examiner Pack — One Export, Independently Verifiable
Audit

Supply-chain and chain-policy findings, plus regulated-profile denies, are stamped onto the VAS log and sealed into the same tamper-evident HMAC chain as LLM and A2A events. A shared correlation id (x-correlation-id / x-conversation-id / x-trace-id) stitches one agent turn together across all three surfaces.


POST /api/examination/pack exports LLM + MCP + A2A events for a period into a JSONL bundle with the chain head (seq, HMAC, key id) and an independent verifier path, so an examiner re-verifies the chain without trusting the console.

Unlocks

An auditor gets one file that covers every surface an agent touched, and can recompute each entry's HMAC and walk the prev-hash links themselves — evidence, not a screenshot.

Configuration
EnvDefaultEffect
MCP_SUPPLY_CHAINquarantinePin + poison enforcement on tools/list
MCP_CHAIN_POLICYwarnCross-tool chain / taint on tools/call
MCP_CHAIN_SEQUENCES(bundle)JSON override of ordered class sequences
SMARTFLOW_PROFILE(unset)regulated turns on the IAL2-fresh gate
REGULATED_MIN_IAL2Identity-assurance floor for the principal
REGULATED_MAX_AGE_SECONDS900Proofing freshness window
SHIELD_RULESET_PATHembeddedShared bundle (rules + supply_chain + chain_policy)
Release Summary
#FeatureArea
1TOFU catalog pinning + rug-pull detection on tools/list — Redis-backed pins, admin pin/repin, dashboard Integrity tabMCP
2Tool-description poison scan (hidden-instruction / exfil / tool-shadow / role-injection / invisible unicode)MCP
3Cross-tool chain + secret → egress taint deny on tools/call, hash-only correlationMCP
4Regulated profile — agent bound to an IAL2-fresh human for A2A + MCP egress, denies sealedIdentity
5One bundle drives both seams — poison rules + chain sequences in shieldset.yamlPolicy
6Examiner pack exportPOST /api/examination/pack, one sealed chain, independent verifier pathAudit