Configure the Privacy Gate¶
Z204 (FORBIDDEN_TERM) blocks confidential internal terms — project codenames, internal
hostnames, staging URLs — from leaking into public documentation.
Architecture¶
The Privacy Gate uses a two-file model:
| File | Purpose | Committed? |
|---|---|---|
.zenzic.toml |
Shared project configuration | Yes |
.zenzic.local.toml |
Machine-local forbidden patterns | No |
forbidden_patterns lives exclusively in .zenzic.local.toml. This file is never committed.
Zenzic enforces this by automatically adding .zenzic.local.toml to .gitignore on zenzic init.
Setup¶
1. Initialise the local overlay¶
If .zenzic.local.toml does not yet exist, create it via:
This creates .zenzic.local.toml and adds it to .gitignore automatically.
2. Add forbidden patterns¶
Open .zenzic.local.toml and populate the forbidden_patterns list:
[governance]
forbidden_patterns = [
"CODENAME-PHOENIX",
"internal-staging.example.corp",
"acme-internal-api",
]
Patterns are matched as literal strings, case-insensitive. RE2 DFA syntax is supported
for patterns that require regex matching — see the Configuration Reference
for the full forbidden_patterns specification.
3. Verify .gitignore¶
Confirm .zenzic.local.toml is protected:
git check-ignore -v .zenzic.local.toml
# expected: .gitignore:N:.zenzic.local.toml .zenzic.local.toml
If the line is absent, add it manually:
4. Run the check¶
Z204 fires with exit code 2 when any forbidden term is found. Exit code 2 is identical to Z201 (credential exposure) — the score collapses to 0 unconditionally (Security Override).
CI integration¶
In CI, forbidden_patterns is typically empty — no .zenzic.local.toml is checked out.
Z204 therefore does not fire in CI unless you explicitly provision patterns via a CI secret:
# GitHub Actions example
- name: Write local zenzic overlay
run: |
cat > .zenzic.local.toml << 'EOF'
[governance]
forbidden_patterns = ${{ secrets.ZENZIC_FORBIDDEN_PATTERNS }}
EOF
Alternatively, pass patterns at runtime using the --forbidden flag (if available in your
Zenzic version) rather than writing a file.
Precedence¶
Configuration is resolved in the following order (later entries override earlier):
.zenzic.toml— shared project defaultspyproject.toml [tool.zenzic]— embedded alternative to.zenzic.toml.zenzic.local.toml— machine-local overlay (additive merge for list fields)
For forbidden_patterns, the overlay is additive: patterns in .zenzic.local.toml
are appended to any patterns declared in .zenzic.toml. They do not replace them.
Related¶
- Configuration Reference — full
forbidden_patternsfield specification - Configuration Strategy — troubleshooting the two-file model
- Examples Overview — runnable Z-code gallery scenarios