- An alignment card — who the agent is, what it values, what it’s allowed to do, and its self-declared behavioral limits. Agent-owned (with org/platform as the composition floor).
- A protection card — how Safe House guards the agent at runtime, and the org’s enforced protection policy. Org-owned.
The two cards
Alignment card
The alignment card answers who the agent is and what it may do. Its sections:
The full normative schema is at /specifications/alignment-card-schema.
Protection card
The protection card answers how this agent is defended at runtime and what the org has declared as the protected surface. Its sections:
The full normative schema is at /specifications/protection-card-schema.
Why two cards
Alignment and protection are different concerns with different stakeholders:- Alignment is the agent’s self-declaration (with org/platform as the floor): what it values, what it’s allowed to do, and what it promises about logging. Editing the alignment card is an intentional product decision.
- Protection is the org’s enforced policy: runtime monitoring surfaces, threat thresholds, trusted sources, and — critically — the
protected_surface(assets, forbidden operations, escalation requirements). Editing the protection card is a security posture decision made by org admins, not by the agent.
- Different edit cadence. Alignment changes rarely; protection tuning is frequent. Two cards = two change histories.
- Different approvers. Platform admins may need to approve alignment changes; org admins may manage protection tuning.
- Honest audit trails. You can ask “what did the agent commit to?” separately from “how hard were we watching?”
agents.aip_enforcement_mode + org conscience values all absorbed into one alignment-card.yaml) and elevates the protection side to a proper card (protection-card.yaml replaces the ad-hoc Safe House config).
Up to four scopes
Both cards compose across scopes, in this order — every later layer can only tighten what earlier layers declared, never loosen:
An agent in zero teams — including most personal-org agents — composes under the 3-layer
platform → org → agent cascade. An agent in one or more teams picks up the team layer between org and agent. See Team Scope.
Composition runs at storage time, not per request. When any scope changes, affected agents are marked needs_recompose and the background composer regenerates their canonical cards. Every gateway read hits the pre-composed canonical card, so the request path has zero merge cost.
Field-level composition semantics — union, strictest-wins, min/max, agent-scoped, and so on — vary by section. See Card Composition for the full field-by-field rules table and worked examples.
Exemptions
Granular exemptions let an org admin waive specific sections of the org card for a specific agent without exempting the whole card. For example: “exempt this research agent fromforbidden_actions.no_external_api_calls, nothing else.”
Exemptions are:
- Section-specific (one exemption targets one field, not the whole card).
- Optionally pattern-scoped (specific values within the section).
- Time-bounded (default 90-day expiry) and audit-logged.
- Required fields:
reason,granted_by,granted_at.
org_card_exempt flag, which was an all-or-nothing escape hatch.
The canonical URL surface
Both cards are first-class API resources, addressable through one uniform URL shape at every scope:<resource> is alignment or protection, <scope> is platform / org / team / agent, and <scope_id> is a stable identifier (the literal string default for the platform scope). The verbs are a small fixed set:
protection. One routing table covers every scope for both resources — authoring tools, CI Actions, and SDKs build it once.
Older, scope-specific URLs (/v1/agents/{id}/alignment-card, /v1/orgs/{id}/alignment-template, /v1/admin/platform-card/alignment, and their protection + preview-compose equivalents) still work: each returns an HTTP 308 Permanent Redirect (RFC 7538) to its canonical equivalent, preserving the original method and body, with Deprecation/Sunset/Link headers pointing here. Point new code at the canonical URL directly — it’s the same call, one hop shorter.
One legacy path per resource × scope, so org/team/platform callers don’t have to infer the pattern:
Each row’s
GET/PUT/DELETE/.../preview-compose verbs redirect the same way — only the resource path changes.
This canonical surface is also the foundation for two more capabilities:
- Sub-resource verbs —
PUT/PATCH /v1/<resource>/<scope>/<scope_id>/<primitive>to set just one primitive without replacing the whole spec. - AI helpers —
scaffold,explain,simulate— natural-language and probing UX bound to the same root namespace.
How the cards are used
Runtime (gateway)
Every request through the Mnemom gateway:- Fetches the agent’s canonical alignment card (cached, 5-min TTL;
needs_recomposebypass on org-template updates). - Maps the unified card to the locked AAP
AlignmentCardshape for any call to@mnemom/agent-alignment-protocol. - Extracts policy from
capabilities+enforcementsections for policy evaluation via@mnemom/policy-engine. - Fetches the canonical protection card for Safe House detection. The card’s
protected_surface(org-ownedassets,forbidden_operations,escalation_required) is the source of truth for Safe House L2 enforcement — independent of what the agent declares in its alignment card. - Applies alignment-card
autonomy.forbidden_actionsas a behavioral hard deny; appliesintegrity_modeto the checkpoint pipeline; applies protection-cardprotected_surface.forbidden_operationsas the org’s hard policy floor via Safe House.
Observer (trace analysis)
The observer pipeline reads the canonical alignment card for trace verification (verifyTrace against the card’s values/autonomy contract) and drift detection. It does not touch the protection card (protection is inline at the gateway).
Website (human surfaces)
Agent owners edit alignment cards in the YAML-first card editor atmnemom.ai/dashboard/agents/{id}/card. Protection cards are edited under the security tab. Both surfaces show the raw agent-scope card alongside the canonical card (composed with platform + org defaults), so owners can see which values are coming from where.
Org admins manage org-scope templates and exemptions from the org dashboard.
CLI
mnemom policy … command; policy is now a section of the alignment card, exposed via card evaluate.
Card lifecycle
- Creation. First publish triggers composition against platform + org scopes, writing a canonical card into
canonical_agent_cards. - Amendment. Updating the agent-scope card triggers
compose_agent_cardand writes a new canonical row. - Org template change. Updating an org-scope template sets
needs_recomposeon all affected agents; the background composer regenerates them. Until recompose runs, reads serve the stale canonical with an explicit staleness flag. - Expiry.
expires_atin the alignment card is advisory; the composer refuses to emit a canonical card whoseexpires_atis in the past. - Audit. Every mutation is logged to
governance_audit_logsynchronously with anIdempotency-Key+ two-phase dedupe (reserve → finalize/release).
Modes across both cards
Both cards use theobserve / nudge / enforce vocabulary, but apply it to different layers:
A fleet is most coherent when both cards use matching modes across all agents. The v2 fleet coherence scorer checks
integrity_mode uniformity as a structural invariant (integrity_uniform).
See also
- Alignment Card (AAP 1.0 protocol surface) — the protocol-level card, stable for external interop
- Protection Card — Safe House card schema and semantics
- Card Composition — the full platform → org → team → agent composition rules + exemptions
- Alignment Card Schema — normative unified-card YAML
- Protection Card Schema — normative protection YAML
- Safe House — the runtime protection pipeline the protection card configures
- Policy Engine — how
capabilities+enforcementsections become runtime policy