Individual skill
logging-security
Keep secrets and personal data out of logs at the call site rather than relying on redaction, neutralize log and field injection, record audit events that survive, and treat log read access as data access. Use when generating logger calls or structured-logging schemas, wiring log shippers, sinks, retention, and access controls, or specifying audit-logging requirements.
skills/logging-security/SKILL.md
Source commit eaba88102d91df65a9aa6397e8507c315c018f5e
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- Yes
- Observed behavior
- Not checked yet
- Last checked
- Nov 6, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
Standard SKILL.md format has not been attested at this commit. No installation command is available; inspect the source.
Repository context
- Repository stars (not skill ratings)
- 23
- Repository last updated
- Aug 14, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 7,394 bytesreferences/verifying-findings.mddoc · 3,877 bytesrules/audit_event_schema.jsonasset · 1,339 bytesrules/redaction_patterns.jsonasset · 2,517 bytestests/corpus.jsonasset · 6,259 bytes
Read excerpt
# Logging Security
## Rules (for AI agents)
### ALWAYS
- Decide what is safe to log **at the call site**, and log a reference rather than a
value: an id, a hash, a type, a count. A redactor is the last net, not the design —
it matches field names and known patterns, so it cannot see personal data sitting
inside an assembled string. A formatted notification body, a templated message, an
exception with interpolated arguments: the name and the address are in the prose,
in no named field, matching no pattern. Nothing downstream will catch that.
- Run a **redactor** at the sink anyway, for the cases the call site missed:
credential-shaped values, `Authorization` and `Cookie` headers, query strings
carrying tokens, and the personal-data patterns in `rules/redaction_patterns.json`.