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 skills add TimSimpsonJr/magpie --skill redact-outputgit clone --depth 1 https://github.com/TimSimpsonJr/magpieWrote 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/timsimpsonjr/magpie/redact-output)<a href="https://agentmods.dev/skills/timsimpsonjr/magpie/redact-output"><img src="https://agentmods.dev/badge/skills/timsimpsonjr/magpie/redact-output/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/timsimpsonjr/magpie/redact-output"><img src="https://agentmods.dev/badge/skills/timsimpsonjr/magpie/redact-output.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00150 | $0.01505 |
| Opus 5 | $0.00075 | $0.00753 |
| Sonnet 5 | $0.00030 | $0.00301 |
| Haiku 4.5 | $0.00015 | $0.00151 |
Grade A, and why
redact-output 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 10d 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 — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
redact-output
Redact UNINVOLVED third-party PII for PUBLISHED artifacts, while the FULL
un-redacted exhibit is written to a LOCAL non-vault path. This is the OUTPUT side
of Phase 7; it consumes Phase-5 pii_sweep's opt-in local_texts.
The redaction POLICY (Tim's call -- INVOLVED vs UNINVOLVED)
The line is involved vs uninvolved, NOT official vs non-official:
- KEEP named: officials (rank/title prefix OR an officials-lexicon match) AND
investigator-designated INVOLVED subjects -- supplied via a
keep_namesallowlist (parallel to pii_sweep'sofficial_names). - REDACT to initials: a flagged PERSON name that is NEITHER official NOR involved is an uninvolved third party (the Simpsonville pattern: suspect / POI / minor names dumped into the reason fields).
- SAFE DEFAULT: with no
keep_names, every non-official flagged name is treated as uninvolved and redacted -- Simpsonville works out of the box; a project that is tracing involved non-official subjects (e.g. financial dealings) supplies them inkeep_namesso they stay named. - ALWAYS mask structured PII (ssn, dob, phone, email, alien#, driver-lic) to a TYPED placeholder regardless of the name policy.
The four entry points (design 2.0)
from scripts.redact_output import (
redact_text, redact_note, redact_local_texts, write_local_exhibit,
)
redact_text(text, *, keep_names=(), officials=()) -> str-- redact ONE flagged reason-field text (uninvolved names -> initials, structured PII -> typed placeholder). PUBLISH-safe; carries notext_id.redact_local_texts(local_texts, *, keep_names=()) -> {text_id: redacted}-- a LOCAL-ONLY map (feeds the exhibit; NEVER a published surface).redact_note(note_text, local_texts, *, keep_names=()) -> str-- the PUBLISH-safe note sanitizer: replaces each KNOWN flagged text in the note with itsredact_textform, leaving the analyst's surrounding narrative untouched. The Task-7.2 "redact a findings note" path.write_local_exhibit(local_texts, exhibit_dir, *, vault_roots=()) -> Path-- write the FULL un-redacted exhibit CSV underexhibit_dir, the ONLY surface that carriestext_id+ raw text. Vault-guarded.
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.
- 10d ago First seen · 95 lines · 150 tokens per session scan A dd5212208ddd
redact-output is a skill published in the GitHub repository TimSimpsonJr/magpie (2 stars, last pushed 3mo ago), licensed MIT. It adds 150 tokens to every session and 1,505 once invoked, about $0.0007 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
foia-request-writer
Drafts legally complete public records requests (federal FOIA and all 50 state laws), administrative appeals, and redaction challenge strategies for U.S. government records.
foi-data-request
Drafts a Freedom of Information request specifically targeting datasets, databases, or digital records — written to maximise the chance of receiving complete, machine-readable data rather than summary PDFs or partial tables.
source-verification
Walks through structured verification of sources, claims, images, video, and documents across five verification modes — visual media, documents, anonymous sources, expert credentials, and social media content — using the SIFT framework, forensic metadata inspection, deepfake indicators, C2PA Content Credentials, and…
pdf-table-extractor-brief
Produces a structured extraction plan and clean spreadsheet template for pulling tabular data out of a PDF document — identifying the table structure, defining column headers, flagging extraction pitfalls, and providing a ready-to-use template that ensures the data lands in a consistent, analysable format.
osint-tool-catalog
Produces a categorised catalog of open-source intelligence tools relevant to a journalist's investigation, with practical guidance on what each tool does, when to use it, and what its limitations are.
eu-document-access-builder
Drafts a formal access-to-documents request under the applicable European transparency law for a specified institution and jurisdiction — covering EU Regulation 1049/2001, Germany's IFG, Switzerland's BGÖG, and France's CADA regime — using the correct legal basis, required elements, and procedural language for each.