blacklist/ · Body: must be empty
Blacklist entries carry no body — the pattern is in frontmatter.
Frontmatter
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
org | string | null | No | tenant | Organization name. Omit (or null) for tenant-wide blocks applied to every org. |
pattern | string | Yes | — | The pattern that blocks matching commands. Substring match by default; * and ? glob wildcards supported. |
description | string | null | No | null | Why this command is blocked. Surfaces in the matching error. |
Fields NOT supported
id,tenant_id,created_at,updated_at— system-set
Example
blacklist/rm-rf-root.mdx
blacklist/interactive-editors.mdx
Gotchas
- Substring match by default.
pattern: vimblocksvim file.txt,git --paginate=vim, anywherevimappears. Use globs for precise patterns:pattern: rm -rf *. - No regex. Only
*and?are interpreted; everything else is literal. - Tenant blacklist beats org. Tenant-scoped entries can’t be overridden by an org-scoped allowlist (there is no allowlist concept).
- Body must be empty. Common mistake: putting an explanation in the body. Move it to
descriptionin frontmatter.

