Skill Vault
A signed, scanned, content-addressed registry for every SKILL.md your agents load.
Agents are increasingly shipping with SKILL.md files — task-specific instructions, tool examples, and domain knowledge that gets injected into context when a matching task arrives. That's a powerful pattern. It's also a supply-chain problem waiting to happen: a malicious or compromised skill can inject prompts, leak secrets, or steer the agent toward unapproved tools. The Skill Vault is how you stop trusting skills and start verifying them.
The Signing Lifecycle
Skill Lifecycle — Signed, Scanned, Revocable
Every skill passes through six stages:
- Author — someone writes
SKILL.mdand its supporting assets. - Scan — the vault scans for hard-coded secrets, prompt-injection patterns, suspicious shell invocations, dependency footprint, and known-bad templates.
- Sign — a passing skill is content-addressed (
sha256(SKILL.md || asset_tree)) and signed with the organization's private key. - Publish — the signed skill is registered in the vault. A unique
skill_id+ version identifies it. - Consume — agents load skills through
GET /v1/skills/:idwhich returns the signed bundle; the agent verifies the signature before injecting into context. - Revoke — if a vulnerability is found later, the content hash is blocklisted. Every agent currently loading that skill is notified on the next load attempt.
Nothing unsigned reaches an agent. Nothing whose signature fails verification reaches an agent. Nothing whose hash is blocklisted reaches an agent.
The Scan Surface
The scanner catches:
| Class | Examples |
|---|---|
| Hard-coded secrets | OpenAI / Anthropic / AWS / Stripe API keys, JWT tokens, database URLs with embedded credentials |
| Prompt injection | \"Ignore previous instructions…\", role-break markers, system-prompt override patterns |
| Shell payload | Suspicious sh -c, `curl |
| Tool escalation | Skill examples that call tools outside the agent's normal scope without justification |
| Data exfiltration | Skills that route output to external hosts, write to unexpected paths, or exfil via DNS |
| Template abuse | Known-bad skill patterns from the Trinitite threat feed |
A skill that fails any class goes to quarantine, not publication.
The Quarantine Path
Quarantine Lifecycle — When a Scan Fails
A quarantined skill doesn't silently disappear. It enters a triage queue: operators review the finding, decide whether it's a false positive or remediable, and either clear it back to the signing path or purge it permanently with the hash added to the organization's blocklist.
A purged skill's content hash remains blocklisted forever. If the same content is ever re-submitted — under a different filename, from a different author, via a different integration — the scanner recognizes the hash and blocks it at intake.
Consumption Is Verifiable
When an agent loads a skill, the response contains the signature envelope:
{
"skill_id": "skl_…",
"version": "2026.05.01",
"content": "…",
"assets": [{"path":"example.sh","hash":"sha256:…"}],
"content_hash": "sha256:…",
"signature": {
"kid": "org-key-2026-q2",
"alg": "Ed25519",
"value": "base64:…"
},
"scan_record": "scn_…",
"ledger_block": "blk_…"
}
The agent SDK verifies:
- The signature matches the content hash under the signing key (published at the public JWKS endpoint — see Identity & RBAC).
- The content hash is not on the revocation blocklist.
- The skill's tier/scope matches the agent's authorized surface.
If any check fails, the skill is refused with a specific error code. Agents never load skills without cryptographic provenance.
Revocation Cascades
When an operator revokes a skill:
- The content hash enters the revocation list.
- The revocation list is published at an unauthenticated endpoint for third-party verification.
- Every agent that has loaded the skill in the last TTL is marked to re-verify on next load.
- Ledger entries for past usages remain — revocation doesn't rewrite history.
- Related alert fires to the configured incident pipeline.
This is supply-chain revocation that actually reaches the consumer, not just a registry flag that nobody watches.
What You Get
| Capability | Unsigned skill shipping | Skill Vault |
|---|---|---|
| Intake hygiene | Manual review (or none) | Automated scan for 6+ threat classes |
| Tamper detection | None | Content-addressed hashing |
| Authenticity | Trust source folder | Org-signed with public verification |
| Revocation | Deploy removal (agents cached) | Cascade to live agents on next load |
| Provenance | Filename / path | skill_id + version + content_hash + scan_record |
| Audit | Scattered | Every load event in the ledger |
Next Steps
→ CLI Firewall — the sister surface for governing commands skills may tell agents to run.
→ Glass Box Ledger — where every scan, signature, consumption, and revocation is anchored.
→ Identity & RBAC — the signing key publication and public verification story.