Skip to main content
skill CX Codex

output-sanitizer — Claude Code skill: scrub agent output

A skill that scans the agent's reply before it is shown or logged and strips leaked keys, PII and internal paths. Useful when output leaves your machine.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add UseAI-pro/openclaw-skills-security --skill output-sanitizer -a claude-code
Open on GitHub

What output-sanitizer does

The skill sits between the agent's answer and whatever reads it. It runs a set of detection patterns over the text and replaces what matches: AWS and OpenAI keys, GitHub tokens, JWTs, private keys, passwords in configs, database URLs. All of it becomes [REDACTED].

Then comes personal and internal data. Emails get masked to j***@example.com, phone numbers keep the last four digits, card numbers and SSNs are closed entirely. A home path like /Users/john/ turns into ~/, internal hostnames and endpoints become [internal-host] and [internal], container IDs are cut to the first 8 characters. Findings are graded: credentials and keys are always redacted, PII and database URLs unless you are explicitly debugging, paths are generalised. A report at the end lists every edit with line numbers.

The skill's own rule is to over-redact rather than miss a secret, and original values are never stored. Ask to see your .env and it will show the file, but warn you first. One thing to keep in mind: this is post-processing, so the secret has already entered the model's context — only what reaches the screen or the log gets masked.

What it helps with

  • share agent output without leaking credentials
  • log a session without passwords and tokens
  • strip home paths and internal hosts from stack traces
  • mask emails and phone numbers in generated text
  • clean connection strings out of test fixtures

Example prompts for the agent

  • run this reply through output-sanitizer before showing it
  • scan the output for leaks and mask what you find
  • give me the sanitization report for the last response

How to install output-sanitizer

1Skills CLI (Vercel)

npx skills add UseAI-pro/openclaw-skills-security --skill output-sanitizer -a claude-code

2Manually: put the files in place

~/.claude/skills/output-sanitizer/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/output-sanitizer/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about output-sanitizer

How do I install output-sanitizer in Claude?

Run npx skills add UseAI-pro/openclaw-skills-security --skill output-sanitizer -a claude-code. The skill lands in ~/.claude/skills/output-sanitizer/SKILL.md.

What does output-sanitizer do?

It scans the agent's response before display or logging and replaces detected secrets, personal data and internal paths with masks. It finishes with a report of the edits.

What happens if I ask the agent to show my .env?

The skill will not redact content you explicitly asked for, but it warns you about it. The other masking rules still apply.

Source text

SKILL.md · MIT
---
name: output-sanitizer
description: Sanitize OpenClaw agent output before display. Strips leaked credentials, PII, internal paths, and sensitive
  data from responses.
metadata:
  short-description: Redact secrets, PII, and internal paths from OpenClaw agent output before display or logging.
  why: Prevent accidental leakage of sensitive material from otherwise useful agent responses.
  what: Provides a post-processing module for checking output content for secrets, PII, and internal identifiers.
  how: Uses pattern-based detection and masking rules rather than emitting raw sensitive values.
  results: Produces sanitized operator-facing output with sensitive values masked or removed.
  version: 1.0.0
  updated: '2026-03-10T03:42:30Z'
  jtbd-1: When I need to share or log agent output without leaking credentials or personal data.
  audit:
    kind: module
    author: useclawpro
    category: Security
    trust-score: 94
    last-audited: '2026-02-03'
    permissions:
      file-read: true
      file-write: false
      network: false
      shell: false
---

# Output Sanitizer

You are an output sanitizer for OpenClaw. Before the agent's response is shown to the user or logged, scan it for accidentally leaked sensitive information and redact it.

## Why Output Sanitization Matters

AI agents can accidentally include sensitive data in their responses:
- A code review skill might quote a hardcoded API key it found
- A debug skill might dump environment variables in error output
- A test generator might include database connection strings in test fixtures
- A documentation skill might include internal server paths

## What to Scan and Redact

### 1. Credentials and Secrets

Detect and replace with `[REDACTED]`:

| Type | Pattern | Example |
|---|---|---|
| AWS Access Key | `AKIA[0-9A-Z]{16}` | `AKIA3EXAMPLE7KEY1234` |
| AWS Secret Key | 40-char base64 after access key | `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` |
| OpenAI API Key | `sk-[a-zA-Z0-9]{48}` | `sk-proj-abc123...` |
| Anthropic Key | `sk-ant-[a-zA-Z0-9-]{80,}` | `sk-ant-api03-...` |
| GitHub Token | `ghp_[a-zA-Z0-9]{36}` | `ghp_xxxxxxxxxxxx` |
| Generic Passwords | `password\s*[:=]\s*['"][^'"]+['"]` | `password: "hunter2"` |
| Private Keys | `-----BEGIN.*PRIVATE KEY-----` | PEM-formatted keys |
| JWT Tokens | `eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+` | Full JWT strings |
| Database URLs | `<db-scheme>://[^\s]+` | `postgres://user:pass@host:5432/db` |

Note: `<db-scheme>` usually includes `postgres`, `mysql`, `mongodb`.

### 2. Personally Identifiable Information (PII)

Detect and mask:

| Type | Action | Example |
|---|---|---|
| Email addresses | Mask local part: `j***@example.com` | `[email protected]` |
| Phone numbers | Mask digits: `+1 (***) ***-1234` | Last 4 visible |
| SSN / National IDs | Full redaction: `[SSN REDACTED]` | Any 9-digit pattern with dashes |
| Credit card numbers | Mask: `****-****-****-1234` | Last 4 visible |
| IP addresses (private) | Keep as-is (usually config) | `192.168.1.1` |
| IP addresses (public) | Evaluate context | May need redaction |

### 3. Internal System Information

Redact or generalize:

| Type | Action |
|---|---|
| Full home directory paths | Replace `/Users/john/` with `~/` |
| Internal hostnames | Replace with `[internal-host]` |
| Internal URLs/endpoints | Replace domain with `[internal]` |
| Stack traces with internal paths | Simplify to relative paths |
| Docker/container IDs | Truncate to first 8 chars |

### 4. Source Code Secrets

When the agent outputs code snippets, check for:

- Hardcoded connection strings
- API keys in configuration objects
- Passwords in environment variable defaults
- Private keys embedded in source
- Webhook URLs with tokens

## Sanitization Protocol

### Step 1: Scan

Run all detection patterns against the output text.

### Step 2: Classify

For each finding:
- **Critical**: Credentials, private keys, tokens → always redact
- **High**: PII, database URLs → redact unless explicitly debugging
- **Medium**: Internal paths, hostnames → generalize
- **Low**: Non-sensitive but internal → leave but flag

### Step 3: Redact

Replace sensitive values while preserving context:

```
BEFORE:
  Database connected at postgres://admin:[email protected]:5432/prod

AFTER:
  Database connected at postgres://[REDACTED]@[REDACTED]:5432/[REDACTED]
```

```
BEFORE:
  Error in /Users/john.smith/projects/secret-project/src/auth.ts:42

AFTER:
  Error in ~/projects/.../src/auth.ts:42
```

### Step 4: Report

```
OUTPUT SANITIZATION REPORT
==========================
Items scanned: 1
Redactions made: 3

[CRITICAL] API Key detected and redacted (line 15)
  Type: OpenAI API Key
  Action: Replaced with [REDACTED]

[HIGH] Email address detected and masked (line 28)
  Type: PII - Email
  Action: Masked local part

[MEDIUM] Full home directory path generalized (line 42)
  Type: Internal path
  Action: Replaced with ~/
```

## Rules

1. Always err on the side of over-redacting — a false positive is better than a leaked secret
2. Never log or store the original sensitive values
3. Maintain readability after redaction — the output should still make sense
4. If an entire response is sensitive (e.g., dumping .env), replace with a warning instead
5. Do not redact values in code that the user explicitly asked to see (e.g., "show me my .env")  — but warn them

© UseAI-pro · MIT · UseAI-pro/openclaw-skills-security

Similar skills

Everything for Security →

From the same set10

skill-guard Watches active OpenClaw skills: which files they touch, where they connect, what they run in the shell. Useful when you install someone else's skill and want to see it stay inside its declared permissions. CX Codex +1 573installs prompt-guard This skill scans skill files, user messages and external data for attempts to hijack an agent's instructions. Useful before you install someone else's skill or feed the agent web content. CX Codex +1 546installs credential-scanner Scans your project for exposed keys and passwords before a file-reading skill can pick them up. CX Codex +1 538installs sandbox-guard Builds Docker sandbox configs so you can run untrusted OpenClaw skills without handing them the host. Useful the moment you install someone else's skill. CX Codex +1 483installs permission-auditor Walks through the permissions an OpenClaw skill asks for, explains each one in plain language, and suggests a smaller set. CX Codex +1 476installs setup-auditor Checks an OpenClaw environment for leaked credentials, unsafe defaults and missing sandbox controls. Returns a report with a readiness verdict and a fix checklist. CX Codex +1 469installs config-hardener Checks AGENTS.md, gateway settings, sandbox config and skill permissions in OpenClaw, then hands you a hardening plan. Useful before you let more skills run on a host. CX Codex +1 468installs network-watcher Checks where OpenClaw skills send data over the network and flags exfiltration before you install them. CX Codex +1 454installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor