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/ppiankov/pastewatch/docsnpx skills add ppiankov/pastewatch --skill docsgit clone --depth 1 https://github.com/ppiankov/pastewatchWhat 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.00016 | $0.05225 |
| Opus 5 | $0.00008 | $0.02612 |
| Sonnet 5 | $0.00003 | $0.01045 |
| Haiku 4.5 | $0.00002 | $0.00522 |
Grade A, and why
pastewatch 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 2d 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 — 554 lines — stays where its author put it; the contents beside it link to each section on GitHub.
pastewatch-cli
Sensitive data scanner. Deterministic regex-based detection and obfuscation for text content. No ML, no network calls.
For AI agent setup with secret redaction, see agent-integration.md.
Install
brew install ppiankov/tap/pastewatch
Configuration
Config files
| File | Location | Purpose | Created By |
|---|---|---|---|
.pastewatch.json |
Project root ($CWD) |
Project-level config | pastewatch-cli init |
~/.config/pastewatch/config.json |
Home | User-level defaults | Manual / GUI app |
.pastewatch-allow |
Project root | Value allowlist (one per line, # comments) |
pastewatch-cli init |
.pastewatchignore |
Project root | Path exclusion patterns (glob, like .gitignore) |
Manual |
.pastewatch-baseline.json |
Project root | Known findings baseline (SHA256 fingerprints) | pastewatch-cli baseline create |
Resolution cascade
CWD .pastewatch.json > ~/.config/pastewatch/config.json > built-in defaults.
.pastewatch.json schema
{
"enabled": true,
"enabledTypes": ["Email", "AWS Key", "API Key", "Credential", "High Entropy"],
"showNotifications": true,
"soundEnabled": false,
"allowedValues": ["[email protected]", "192.168.1.1"],
"allowedPatterns": ["sk_test_.*", "EXAMPLE_.*"],
"customRules": [
{"name": "Internal ID", "pattern": "MYCO-[0-9]{6}", "severity": "medium"}
],
"safeHosts": [".internal.company.com", "safe.dev.local"],
"sensitiveHosts": [".local", "secrets.vault.internal.net"],
"sensitiveIPPrefixes": ["172.16.", "10."],
"mcpMinSeverity": "high",
"placeholderPrefix": "REDACTED_PLACEHOLDER_"
}
sensitiveHosts supports 2-segment hostnames (e.g., .local catches nas.local) as well as 3+ segment FQDNs.
Field reference
| Field | Type | Default | Description |
|---|---|---|---|
enabled |
bool | true |
Enable/disable scanning globally |
enabledTypes |
string[] | All except High Entropy | Which detection types to activate (see Detection Types) |
showNotifications |
bool | true |
System notifications on GUI obfuscation |
soundEnabled |
bool | false |
Sound on GUI obfuscation |
allowedValues |
string[] | [] |
Exact values to suppress (merged with .pastewatch-allow file) |
allowedPatterns |
string[] | [] |
Regex patterns for value suppression (wrapped in ^(...)$) |
customRules |
object[] | [] |
Additional regex detection patterns with name, pattern, optional severity |
safeHosts |
string[] | [] |
Hostnames excluded from detection. Leading dot = suffix match (.co.com matches x.co.com) |
sensitiveHosts |
string[] | [] |
Hostnames always detected — overrides built-in and user safe hosts. Also catches 2-segment hosts (e.g., .local → nas.local) |
sensitiveIPPrefixes |
string[] | [] |
IP prefixes always detected — overrides built-in IP exclude list (e.g., 172.16., 10.) |
mcpMinSeverity |
string | "high" |
Default minimum severity for MCP pastewatch_read_file redaction (critical, high, medium, low) |
placeholderPrefix |
string? | null |
Custom prefix for MCP placeholders. When set, produces {prefix}001 instead of __PW_TYPE_N__ |
What ships with it
24 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agent-integration.md 15 KB
- agent-safety.md 15 KB
- agent-setup.md 14 KB
- CLAUDE-SNIPPET.md 2.7 KB
- cli-reference.md 27 KB
- examples/claude-code/pastewatch-guard.sh 4.3 KB runs code
- examples/claude-code/settings.json 396 B
- examples/cline/mcp-config.json 178 B
- examples/cline/pastewatch-hook.sh 3.8 KB runs code
- examples/cursor/mcp.json 153 B
- examples/cursor/pastewatch-guard.sh 2.3 KB runs code
- examples/pastewatch.json 594 B
- examples/README.md 10.0 KB
- examples/roo-code/mcp-config.json 178 B
- examples/roo-code/pastewatch-hook.sh 3.8 KB runs code
- hard-constraints.md 3.3 KB
- proxy-invariants.md 5.3 KB
- release.md 1.5 KB
- research/agy-hallucinated-hooks.md 5.6 KB
- research/agy-hooks-discovery.md 8.2 KB
- research/agy-hooks-follow-up.md 8.3 KB
- research/gh-multi-account-macos.md 4.5 KB
- startup-sweep.md 2.3 KB
- status.md 9.2 KB
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.
- 2d ago First seen · 554 lines · 16 tokens per session scan A 63c0c9f28ef4
pastewatch is a skill published in the GitHub repository ppiankov/pastewatch (5 stars, last pushed 3d ago), licensed MIT. It adds 16 tokens to every session and 5,225 once invoked, about $0.0001 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
frame-macos-notification
拟真 macOS 通知 banner + app icon + 标题正文, 适合 video overlay / 产品发布预告.
visualize
Render a polished visual inline in the chat as part of your answer — a diagram, a chart, an interactive explainer, or a UI mockup. Load it proactively whenever an explanation would land better as a picture than as prose. Do not wait to be asked.
triage-issue-local
Repo-specific triage guidance for warp. Only the categories declared overridable by the core triage-issue skill may be specialized here.
release-peekaboo
Peekaboo release: notarization, npm/GitHub release, appcast, verify, closeout.
chat-complex-documents
Chat with and search your complex documents — ask questions, extract tables and fields, and get answers grounded in the source. Connects the hosted Unstructured Transform MCP server to parse, structure, and enrich PDFs, Word/Excel/PowerPoint, images, scanned files, emails, and 60+ other formats into clean, AI-ready…
geo-writing
Generates GEO/AEO-optimized articles designed to get AI engines (ChatGPT, Perplexity, Claude, Gemini) to cite your brand. Handles research, writing, and file output. Suggests listicle or head-to-head as starting formats if the user is unsure.