Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/sonomoshq/canary/scannpx skills add sonomoshq/Canary --skill scangit clone --depth 1 https://github.com/sonomoshq/CanaryWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/sonomoshq/canary/scan)<a href="https://agentmods.dev/skills/sonomoshq/canary/scan"><img src="https://agentmods.dev/badge/skills/sonomoshq/canary/scan.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00036 | $0.01132 |
| Opus 5 | $0.00018 | $0.00566 |
| Sonnet 5 | $0.00007 | $0.00226 |
| Haiku 4.5 | $0.00004 | $0.00113 |
Grade A, and why
scan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Sonomos LLM PII Scan
Scan your own conversation history for sensitive data that regex pattern matching cannot catch.
Instructions
- Find the transcript. List recent transcripts and pick the most recently modified one:
ls -t ~/.claude/projects/*/*.jsonl 2>/dev/null | head -5
The first line is the most recently modified transcript — use that one (if it's empty or unreadable, fall back to the next one in the list). Its filename stem (the part before .jsonl) is the session UUID — remember it as SESSION_ID for step 4.
- Extract user message text from that transcript with this jq filter:
jq -r 'select(.type == "user") | .message.content | if type=="string" then . elif type=="array" then ([.[] | select(.type=="text") | .text] | join("\n")) else empty end' "$LATEST" 2>/dev/null
Honor $ARGUMENTS:
quick(or no argument): only the last ~6000 characters of that output — pipe throughtail -c 6000.full: ALL of it, every user message in the transcript. This is you reading and reasoning over the text, not a script — if it's long, work through it in batches mentally rather than truncating.
- Scan that text yourself. Look for ALL of the following categories. For each item found, you'll record a hit (step 4).
Identity
name, entity_name, us_passport, date_of_birth, us_ein_fein, national_id, tin_non_us, nhs_number, sin_canadian, us_itin, passport_non_us, license_plate
Financial
us_bank_account, swift_bic
Crypto
private_key, seed_phrase, wallet_key, xpub_key, monero_address, ripple_address, solana_address, metamask_key, exchange_api_key, txid, private_key_hex
Legal
case_number, attorney_number, court_order, litigation_id, contract_number, patent_number, trademark, legal_entity, settlement_ref, subpoena, deposition, evidence_id, witness_id, filing_number
Medical
medical_record_mrn, health_plan_id, dea_number, npi_number, diagnosis_code_icd10, procedure_code_cpt
Technical
jwt, oauth_token, gcp_key, azure_key, generic_secret, generic_api_key, mac_address, geolocation, uuid, imei, serial_number, android_id, iphone_udid, github_pat, slack_token, stripe_api_key, twilio_credentials, sendgrid_api_key, private_key_hex
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 86 lines · 36 tokens per session scan A 1b3ef88d13f2
scan is a skill published in the GitHub repository sonomoshq/Canary (2 stars, last pushed 1mo ago), licensed MIT. It adds 36 tokens to every session and 1,132 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
audit
Produce a comprehensive audit trail of actions, tools used, changes made, and decision rationale. Use when recording compliance evidence, tracking changes, or documenting decision lineage.
gap-analysis-workflow
Identify capability gaps and propose new skills with prioritization. Use when analyzing missing capabilities, planning skill development, performing ontology expansion, or assessing coverage.
checkpoint
Create a safety checkpoint marker before mutation or execution steps. Use when about to modify files, execute plans, or perform any irreversible action. Essential for the CAVR pattern.
compare
Compare multiple alternatives using explicit criteria, weighted scoring, and tradeoff analysis. Use when choosing between options, evaluating alternatives, or making decisions.
constrain
Enforce policies, guardrails, and permission boundaries; refuse unsafe actions and apply least privilege. Use when evaluating actions against policies, checking permissions, or reducing scope to safe boundaries.
critique
Find failure modes, edge cases, ambiguities, and exploit paths in plans, code, or designs. Use when reviewing proposals, auditing security, stress-testing logic, or validating assumptions.