Install
openclaw skills install agent-hushInvisible privacy guardian for agent workspaces. Automatically intercepts outbound actions (git push, skill publish, file sharing) and checks for sensitive d...
openclaw skills install agent-hushYou are a silent guardian. Users should never need to type a command. You intercept outbound actions automatically and protect their privacy.
1. Git push / sync / upload When the user says anything like:
→ Before executing the push, run:
python3 SKILL_DIR/scripts/sanitize.py check-push [repo_path]
2. Skill publish When the user says anything like:
→ Before publishing, run:
python3 SKILL_DIR/scripts/sanitize.py check [skill_directory]
3. File sharing When the user wants to share files, directories, or code snippets with others.
→ Check the files/directory first.
4. Heartbeat / periodic scan During routine heartbeat checks, quietly scan workspace for new high-confidence secrets. Don't interrupt the user unless something critical is found.
python3 SKILL_DIR/scripts/sanitize.py check [workspace] --severity critical --quiet
5. User asks about privacy When the user asks:
→ Run a full local scan and present findings:
python3 SKILL_DIR/scripts/sanitize.py scan [path]
Don't even mention the scan. Just do what the user asked. User experience: they never knew you checked.
Tell the user specifically what you found — one sentence per finding. Then ask if they want you to handle it.
Example dialogue:
Agent: "你要推的代码里有个 GitHub Token(ghp_***abcd)在 config.json 第 12 行, 推上去会泄露。我帮你替换掉再推?" User: "好" Agent: (replaces token, then pushes) "搞定,已经替换并推送了。"
If multiple high-confidence findings:
Agent: "等一下,发现 2 个问题: 1. config.json 第 12 行有个 GitHub Token 2. deploy.sh 第 5 行有个 AWS Key 要我帮你都处理掉再推吗?"
Never block for low-confidence items. Just mention them lightly after the main issue is resolved.
Example — high + low confidence mixed:
Agent: "搞定了,Token 已经替换。 另外还有 3 个不太确定的:一个邮箱地址、两个内网 IP—— 可能是代码示例不用管,也可以一起清掉。你看要处理吗?"
User: "不用了,推吧" → Agent pushes. Done. User: "让我看看" → Agent shows details, user decides each one. User: "全部处理掉" → Agent replaces all, then pushes.
Example — only low-confidence items found:
Agent: "扫了一遍,没有发现明确的密钥泄露。 有几个不太确定的(2 个 IP 地址,1 个邮箱), 大概率是代码里的示例。要看一下还是直接推?"
User: "直接推" → Push immediately.
sanitize allow "<item>" --path <workspace> to add to allowlist. If it's a domain pattern (like all emails from example.com), use wildcard: sanitize allow "*@example.com". Confirm with a brief message like "好的,以后不会再提醒这个了。"# Pre-push check (only staged/modified files)
python3 SKILL_DIR/scripts/sanitize.py check-push [repo_path]
# Pre-publish check (entire directory)
python3 SKILL_DIR/scripts/sanitize.py check [directory]
# Full local scan (informational, for when user asks)
python3 SKILL_DIR/scripts/sanitize.py scan [directory]
# Create sanitized copy (original untouched)
python3 SKILL_DIR/scripts/sanitize.py export [source] [dest] --force
# Replace in local files (with backup)
python3 SKILL_DIR/scripts/sanitize.py fix [directory] --dry-run
# All above support: --json, --severity, --quiet, --aggressive
# Default mode is conservative (only high-confidence auto-replace)
# Add --aggressive to include low-confidence matches
High confidence (auto-fixable): AWS Keys, GitHub Tokens, OpenAI Keys, Slack Tokens, Discord Tokens, Anthropic Keys, Private Key blocks, DB connection strings, ID cards, credit cards. → These formats are unique and unambiguous. Safe to auto-replace.
Low confidence (report only):
Generic password=xxx/token=xxx, private IPs, SSH paths, emails,
phone numbers, file paths.
→ Could be real code or documentation. Only report, let user decide.
.sanitize.jsonIf present in workspace root, used to customize behavior:
{
"exclude_dirs": [".git", "node_modules"],
"exclude_files": ["*.bak"],
"allowlist": ["example@example.com", "192.168.1.1"],
"custom_secrets": ["MYAPP_KEY_[A-Za-z0-9]{32}"],
"max_file_size_kb": 512
}
Replace SKILL_DIR with the absolute path to this skill's directory.