CI/CD policy gates
Policy gates prevent misconfigurations from reaching production. By embedding policy checks directly into your CI/CD pipeline, you catch violations before they affect live agent traffic — not after. There are two types of gates:- Static validation —
mnemom card validatechecks schema correctness. It is fast, offline, and makes no API calls. - Card evaluation —
mnemom card evaluatechecks the card’s policy against a set of tools. It can run locally or against live agent data.
0 on pass, 1 on failure. This means any CI system that interprets exit codes (GitHub Actions, GitLab CI, Jenkins, CircleCI, etc.) will correctly pass or fail the pipeline step.
Static validation gate
Static validation checks that your alignment card conforms to the unified schema without making any API calls. This makes it fast, safe to run on every pull request, and suitable for environments without API credentials.Static validation catches structural errors — missing required fields, invalid enum values, malformed glob patterns, and schema version mismatches. It does not verify that capability mappings reference real tools or that coverage is adequate. Use card evaluation for that.
- GitHub Actions
- GitLab CI
card.yaml or files under cards/ change, keeping CI fast for unrelated pull requests.Card evaluation gate
Card evaluation goes beyond schema validation. It evaluates your card’s policy against the agent’s tools — checking capability mapping coverage, verifying tool permissions, and scoring the card against tool usage. This can run locally or with an API key for live agent data.- GitHub Actions
- GitLab CI
main, making it a pre-deploy gate. The MNEMOM_API_KEY is read from GitHub Secrets and exposed as an environment variable.Exit codes and error handling
Bothcard validate and card evaluate use standard exit codes that CI systems interpret automatically:
| Exit Code | Meaning | CI Behavior |
|---|---|---|
0 | All checks pass | Pipeline continues |
1 | Validation or evaluation failures | Pipeline fails |
1, the pipeline step fails, and downstream steps (like deployment) are skipped.
Gating in CI
card evaluate prints a human-readable report (verdict, violations, warnings, and coverage metrics) and signals the result through its exit code, which is what CI gates on:
--strict only hard policy violations exit 1; with --strict any warning — including an unmapped tool action (sub-100% coverage) — also exits 1, so the pipeline step fails.
card evaluate does not emit machine-readable JSON today. CI pipelines should gate on the exit code (0 = pass, 1 = fail) rather than parsing stdout.Combining with reputation gates
For comprehensive pre-deploy checks, combine policy gates with reputation gates. Policy gates verify that your governance configuration is correct. Reputation gates verify that your agent’s trust score meets your organization’s threshold. Together, they ensure both policy correctness and operational trustworthiness before code reaches production.The
reputation-gate job uses the mnemom/reputation-check@v1 GitHub Action, which is a standalone action that checks the agent’s reputation score against a minimum threshold. See Embeddable Trust Badges for full configuration options.Setting up the full pipeline
Here is a complete end-to-end workflow that validates on every PR and evaluates on merge tomain:
In GitHub, go to Settings > Secrets and variables > Actions, then add
MNEMOM_API_KEY with your API key. In GitLab, go to Settings > CI/CD > Variables and add it there with the “Masked” option enabled.Add a workflow file that runs static validation on every pull request that modifies card files. This catches schema errors before code review.
Add a second workflow file that runs card evaluation on pushes to
main. This confirms the card’s policy is valid against the agent’s tools before deployment proceeds.If your organization enforces minimum trust scores, add the
mnemom/reputation-check action as a parallel job in your deploy workflow.Best practices
- Run validation on every PR that touches card files. Static validation is fast and catches the most common mistakes before human review begins.
- Run evaluation on main branch merges (pre-deploy). Evaluation confirms the card’s policy works against your agent’s tools, not just schema correctness.
- Store card.yaml in version control alongside application code. This gives you diff visibility, rollback capability, and a clear audit trail for every policy change.
- Gate on the exit code, not stdout.
card evaluateprints a human-readable report and signals pass/fail through its exit code (0/1); add--strictto fail on warnings such as unmapped tool actions. There is no JSON output mode today. - Set up notifications for evaluation failures. Route CI failures to Slack, email, or your incident management tool so the team responds quickly.
- Keep validation fast by running it first. Since static validation needs no API call, it should always be the first gate. If it fails, there is no reason to run the slower evaluation step.
See also
- CLI Reference — CLI command details for
card validate,card evaluate, andcard publish - Policy Management — Full policy workflow from creation to publish
- Policy DSL Specification — Schema reference for policy sections within alignment cards
- Embeddable Trust Badges — GitHub Action for reputation gates