{
  "schemaVersion": "1.0",
  "item": {
    "slug": "arc-shield",
    "name": "Arc Shield",
    "source": "tencent",
    "type": "skill",
    "category": "安全合规",
    "sourceUrl": "https://clawhub.ai/arc-claw-bot/arc-shield",
    "canonicalUrl": "https://clawhub.ai/arc-claw-bot/arc-shield",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/arc-shield",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=arc-shield",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "COMPLETION_SUMMARY.md",
      "INSTALLATION.md",
      "QUICKREF.md",
      "README.md",
      "SKILL.md",
      "examples/demo.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "arc-shield",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T17:56:38.854Z",
      "expiresAt": "2026-04-30T17:56:38.854Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=arc-shield",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=arc-shield",
        "contentDisposition": "attachment; filename=\"arc-shield-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "arc-shield"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/arc-shield"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/arc-shield",
    "agentPageUrl": "https://openagent3.xyz/skills/arc-shield/agent",
    "manifestUrl": "https://openagent3.xyz/skills/arc-shield/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/arc-shield/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "arc-shield",
        "body": "Output sanitization for agent responses. Scans ALL outbound messages for leaked secrets, tokens, keys, passwords, and PII before they leave the agent.\n\n⚠️ This is NOT an input scanner — clawdefender already handles that. This is an OUTPUT filter for catching things your agent accidentally includes in its own responses."
      },
      {
        "title": "Why You Need This",
        "body": "Agents have access to sensitive data: 1Password vaults, environment variables, config files, wallet keys. Sometimes they accidentally include these in responses when:\n\nDebugging and showing full command output\nCopying file contents that contain secrets\nGenerating code examples with real credentials\nSummarizing logs that include tokens\n\nArc-shield catches these leaks before they reach Discord, Signal, X, or any external channel."
      },
      {
        "title": "🔴 CRITICAL (blocks in --strict mode)",
        "body": "API Keys & Tokens: 1Password (ops_*), GitHub (ghp_*), OpenAI (sk-*), Stripe, AWS, Bearer tokens\nPasswords: Assignments like password=... or passwd: ...\nPrivate Keys: Ethereum (0x + 64 hex), SSH keys, PGP blocks\nWallet Mnemonics: 12/24 word recovery phrases\nPII: Social Security Numbers, credit card numbers\nPlatform Tokens: Slack, Telegram, Discord"
      },
      {
        "title": "🟠 HIGH (warns loudly)",
        "body": "High-entropy strings: Shannon entropy > 4.5 for strings > 16 chars (catches novel secret patterns)\nCredit cards: 16-digit card numbers\nBase64 credentials: Long base64 strings that look like tokens"
      },
      {
        "title": "🟡 WARN (informational)",
        "body": "Secret file paths: ~/.secrets/*, paths containing \"password\", \"token\", \"key\"\nEnvironment variables: ENV_VAR=secret_value exports\nDatabase URLs: Connection strings with credentials"
      },
      {
        "title": "Installation",
        "body": "cd ~/.openclaw/workspace/skills\ngit clone <arc-shield-repo> arc-shield\nchmod +x arc-shield/scripts/*.sh arc-shield/scripts/*.py\n\nOr download as a skill bundle."
      },
      {
        "title": "Command-line",
        "body": "# Scan agent output before sending\nagent-response.txt | arc-shield.sh\n\n# Block if critical secrets found (use before external messaging)\necho \"Message text\" | arc-shield.sh --strict || echo \"BLOCKED\"\n\n# Redact secrets and return sanitized text\ncat response.txt | arc-shield.sh --redact\n\n# Full report\narc-shield.sh --report < conversation.log\n\n# Python version with entropy detection\ncat message.txt | output-guard.py --strict"
      },
      {
        "title": "Integration with OpenClaw Agents",
        "body": "Pre-send hook (recommended)\n\nAdd to your messaging skill or wrapper:\n\n#!/bin/bash\n# send-message.sh wrapper\n\nMESSAGE=\"$1\"\nCHANNEL=\"$2\"\n\n# Sanitize output\nSANITIZED=$(echo \"$MESSAGE\" | arc-shield.sh --strict --redact)\nEXIT_CODE=$?\n\nif [[ $EXIT_CODE -eq 1 ]]; then\n    echo \"ERROR: Message contains critical secrets and was blocked.\" >&2\n    exit 1\nfi\n\n# Send sanitized message\nopenclaw message send --channel \"$CHANNEL\" \"$SANITIZED\"\n\nManual pipe\n\nBefore any external message:\n\n# Generate response\nRESPONSE=$(agent-generate-response)\n\n# Sanitize\nCLEAN=$(echo \"$RESPONSE\" | arc-shield.sh --redact)\n\n# Send\nsignal send \"$CLEAN\""
      },
      {
        "title": "Testing",
        "body": "cd skills/arc-shield/tests\n./run-tests.sh\n\nIncludes test cases for:\n\nReal leaked patterns (1Password tokens, Instagram passwords, wallet mnemonics)\nFalse positive prevention (normal URLs, email addresses, file paths)\nRedaction accuracy\nStrict mode blocking"
      },
      {
        "title": "Configuration",
        "body": "Patterns are defined in config/patterns.conf:\n\nCRITICAL|GitHub PAT|ghp_[a-zA-Z0-9]{36,}\nCRITICAL|OpenAI Key|sk-[a-zA-Z0-9]{20,}\nWARN|Secret Path|~\\/\\.secrets\\/[^\\s]*\n\nEdit to add custom patterns or adjust severity levels."
      },
      {
        "title": "Modes",
        "body": "ModeBehaviorExit CodeUse CaseDefaultPass through + warnings to stderr0Development, logging--strictBlock on CRITICAL findings1 if criticalProduction outbound messages--redactReplace secrets with [REDACTED:TYPE]0Safe logging, auditing--reportAnalysis only, no pass-through0Auditing conversations"
      },
      {
        "title": "Entropy Detection",
        "body": "The Python version (output-guard.py) includes Shannon entropy analysis to catch secrets that don't match regex patterns:\n\n# Detects high-entropy strings like:\nkJ8nM2pQ5rT9vWxY3zA6bC4dE7fG1hI0  # Novel API key format\nZm9vOmJhcg==                      # Base64 credentials\n\nThreshold: 4.5 bits (configurable with --entropy-threshold)"
      },
      {
        "title": "Performance",
        "body": "Bash version: ~10ms for typical message (< 1KB)\nPython version: ~50ms with entropy analysis\nZero external dependencies: bash + Python stdlib only\n\nFast enough to run on every outbound message without noticeable delay."
      },
      {
        "title": "Real-World Catches",
        "body": "From our own agent sessions:\n\n# 1Password token\n\"ops_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\n# Instagram password in debug output\n\"instagram login: user@example.com / MyInsT@Gr4mP4ss!\"\n\n# Wallet mnemonic in file listing\n\"cat ~/.secrets/wallet-recovery-phrase.txt\nabandon ability able about above absent absorb abstract...\"\n\n# GitHub PAT in git config\n\"[remote \"origin\"]\nurl = https://ghp_abc123:@github.com/user/repo\"\n\nAll blocked by arc-shield before reaching external channels."
      },
      {
        "title": "Best Practices",
        "body": "Always use --strict for external messages (Discord, Signal, X, email)\nUse --redact for logs you want to review later\nRun tests after adding custom patterns to check for false positives\nPipe through both bash and Python versions for maximum coverage:\nmessage | arc-shield.sh --strict | output-guard.py --strict\n\n\nDon't rely on this alone — educate your agent to avoid including secrets in the first place (see AGENTS.md output sanitization directive)"
      },
      {
        "title": "Limitations",
        "body": "Context-free: Can't distinguish between \"here's my password: X\" (bad) and \"set your password to X\" (instruction)\nNo semantic understanding: Won't catch \"my token is in the previous message\"\nPattern-based: New secret formats require pattern updates\n\nUse in combination with agent instructions and careful prompt engineering."
      },
      {
        "title": "Integration Example",
        "body": "Full OpenClaw agent integration:\n\n# In your agent's message wrapper\nsend_external_message() {\n    local message=\"$1\"\n    local channel=\"$2\"\n    \n    # Pre-flight sanitization\n    if ! echo \"$message\" | arc-shield.sh --strict > /dev/null 2>&1; then\n        echo \"ERROR: Message blocked by arc-shield (contains secrets)\" >&2\n        return 1\n    fi\n    \n    # Double-check with entropy detection\n    if ! echo \"$message\" | output-guard.py --strict > /dev/null 2>&1; then\n        echo \"ERROR: High-entropy secret detected\" >&2\n        return 1\n    fi\n    \n    # Safe to send\n    openclaw message send --channel \"$channel\" \"$message\"\n}"
      },
      {
        "title": "Troubleshooting",
        "body": "False positives on normal text:\n\nAdjust entropy threshold: output-guard.py --entropy-threshold 5.0\nEdit config/patterns.conf to refine regex patterns\nAdd exceptions to the pattern file\n\nSecrets not detected:\n\nCheck pattern file for coverage\nRun with --report to see what's being scanned\nTest with tests/run-tests.sh using your sample\nConsider lowering entropy threshold (but watch for false positives)\n\nPerformance issues:\n\nUse bash version only (skip entropy detection)\nLimit input size with head -c 10000\nRun in background: arc-shield.sh --report &"
      },
      {
        "title": "Contributing",
        "body": "Add new patterns to config/patterns.conf following the format:\n\nSEVERITY|Category Name|regex_pattern\n\nTest with tests/run-tests.sh before deploying."
      },
      {
        "title": "License",
        "body": "MIT — use freely, protect your secrets.\n\nRemember: Arc-shield is your safety net, not your strategy. Train your agent to never include secrets in responses. This tool catches mistakes, not malice."
      }
    ],
    "body": "arc-shield\n\nOutput sanitization for agent responses. Scans ALL outbound messages for leaked secrets, tokens, keys, passwords, and PII before they leave the agent.\n\n⚠️ This is NOT an input scanner — clawdefender already handles that. This is an OUTPUT filter for catching things your agent accidentally includes in its own responses.\n\nWhy You Need This\n\nAgents have access to sensitive data: 1Password vaults, environment variables, config files, wallet keys. Sometimes they accidentally include these in responses when:\n\nDebugging and showing full command output\nCopying file contents that contain secrets\nGenerating code examples with real credentials\nSummarizing logs that include tokens\n\nArc-shield catches these leaks before they reach Discord, Signal, X, or any external channel.\n\nWhat It Detects\n🔴 CRITICAL (blocks in --strict mode)\nAPI Keys & Tokens: 1Password (ops_*), GitHub (ghp_*), OpenAI (sk-*), Stripe, AWS, Bearer tokens\nPasswords: Assignments like password=... or passwd: ...\nPrivate Keys: Ethereum (0x + 64 hex), SSH keys, PGP blocks\nWallet Mnemonics: 12/24 word recovery phrases\nPII: Social Security Numbers, credit card numbers\nPlatform Tokens: Slack, Telegram, Discord\n🟠 HIGH (warns loudly)\nHigh-entropy strings: Shannon entropy > 4.5 for strings > 16 chars (catches novel secret patterns)\nCredit cards: 16-digit card numbers\nBase64 credentials: Long base64 strings that look like tokens\n🟡 WARN (informational)\nSecret file paths: ~/.secrets/*, paths containing \"password\", \"token\", \"key\"\nEnvironment variables: ENV_VAR=secret_value exports\nDatabase URLs: Connection strings with credentials\nInstallation\ncd ~/.openclaw/workspace/skills\ngit clone <arc-shield-repo> arc-shield\nchmod +x arc-shield/scripts/*.sh arc-shield/scripts/*.py\n\n\nOr download as a skill bundle.\n\nUsage\nCommand-line\n# Scan agent output before sending\nagent-response.txt | arc-shield.sh\n\n# Block if critical secrets found (use before external messaging)\necho \"Message text\" | arc-shield.sh --strict || echo \"BLOCKED\"\n\n# Redact secrets and return sanitized text\ncat response.txt | arc-shield.sh --redact\n\n# Full report\narc-shield.sh --report < conversation.log\n\n# Python version with entropy detection\ncat message.txt | output-guard.py --strict\n\nIntegration with OpenClaw Agents\nPre-send hook (recommended)\n\nAdd to your messaging skill or wrapper:\n\n#!/bin/bash\n# send-message.sh wrapper\n\nMESSAGE=\"$1\"\nCHANNEL=\"$2\"\n\n# Sanitize output\nSANITIZED=$(echo \"$MESSAGE\" | arc-shield.sh --strict --redact)\nEXIT_CODE=$?\n\nif [[ $EXIT_CODE -eq 1 ]]; then\n    echo \"ERROR: Message contains critical secrets and was blocked.\" >&2\n    exit 1\nfi\n\n# Send sanitized message\nopenclaw message send --channel \"$CHANNEL\" \"$SANITIZED\"\n\nManual pipe\n\nBefore any external message:\n\n# Generate response\nRESPONSE=$(agent-generate-response)\n\n# Sanitize\nCLEAN=$(echo \"$RESPONSE\" | arc-shield.sh --redact)\n\n# Send\nsignal send \"$CLEAN\"\n\nTesting\ncd skills/arc-shield/tests\n./run-tests.sh\n\n\nIncludes test cases for:\n\nReal leaked patterns (1Password tokens, Instagram passwords, wallet mnemonics)\nFalse positive prevention (normal URLs, email addresses, file paths)\nRedaction accuracy\nStrict mode blocking\nConfiguration\n\nPatterns are defined in config/patterns.conf:\n\nCRITICAL|GitHub PAT|ghp_[a-zA-Z0-9]{36,}\nCRITICAL|OpenAI Key|sk-[a-zA-Z0-9]{20,}\nWARN|Secret Path|~\\/\\.secrets\\/[^\\s]*\n\n\nEdit to add custom patterns or adjust severity levels.\n\nModes\nMode\tBehavior\tExit Code\tUse Case\nDefault\tPass through + warnings to stderr\t0\tDevelopment, logging\n--strict\tBlock on CRITICAL findings\t1 if critical\tProduction outbound messages\n--redact\tReplace secrets with [REDACTED:TYPE]\t0\tSafe logging, auditing\n--report\tAnalysis only, no pass-through\t0\tAuditing conversations\nEntropy Detection\n\nThe Python version (output-guard.py) includes Shannon entropy analysis to catch secrets that don't match regex patterns:\n\n# Detects high-entropy strings like:\nkJ8nM2pQ5rT9vWxY3zA6bC4dE7fG1hI0  # Novel API key format\nZm9vOmJhcg==                      # Base64 credentials\n\n\nThreshold: 4.5 bits (configurable with --entropy-threshold)\n\nPerformance\nBash version: ~10ms for typical message (< 1KB)\nPython version: ~50ms with entropy analysis\nZero external dependencies: bash + Python stdlib only\n\nFast enough to run on every outbound message without noticeable delay.\n\nReal-World Catches\n\nFrom our own agent sessions:\n\n# 1Password token\n\"ops_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n\n# Instagram password in debug output\n\"instagram login: user@example.com / MyInsT@Gr4mP4ss!\"\n\n# Wallet mnemonic in file listing\n\"cat ~/.secrets/wallet-recovery-phrase.txt\nabandon ability able about above absent absorb abstract...\"\n\n# GitHub PAT in git config\n\"[remote \"origin\"]\nurl = https://ghp_abc123:@github.com/user/repo\"\n\n\nAll blocked by arc-shield before reaching external channels.\n\nBest Practices\nAlways use --strict for external messages (Discord, Signal, X, email)\nUse --redact for logs you want to review later\nRun tests after adding custom patterns to check for false positives\nPipe through both bash and Python versions for maximum coverage:\nmessage | arc-shield.sh --strict | output-guard.py --strict\n\nDon't rely on this alone — educate your agent to avoid including secrets in the first place (see AGENTS.md output sanitization directive)\nLimitations\nContext-free: Can't distinguish between \"here's my password: X\" (bad) and \"set your password to X\" (instruction)\nNo semantic understanding: Won't catch \"my token is in the previous message\"\nPattern-based: New secret formats require pattern updates\n\nUse in combination with agent instructions and careful prompt engineering.\n\nIntegration Example\n\nFull OpenClaw agent integration:\n\n# In your agent's message wrapper\nsend_external_message() {\n    local message=\"$1\"\n    local channel=\"$2\"\n    \n    # Pre-flight sanitization\n    if ! echo \"$message\" | arc-shield.sh --strict > /dev/null 2>&1; then\n        echo \"ERROR: Message blocked by arc-shield (contains secrets)\" >&2\n        return 1\n    fi\n    \n    # Double-check with entropy detection\n    if ! echo \"$message\" | output-guard.py --strict > /dev/null 2>&1; then\n        echo \"ERROR: High-entropy secret detected\" >&2\n        return 1\n    fi\n    \n    # Safe to send\n    openclaw message send --channel \"$channel\" \"$message\"\n}\n\nTroubleshooting\n\nFalse positives on normal text:\n\nAdjust entropy threshold: output-guard.py --entropy-threshold 5.0\nEdit config/patterns.conf to refine regex patterns\nAdd exceptions to the pattern file\n\nSecrets not detected:\n\nCheck pattern file for coverage\nRun with --report to see what's being scanned\nTest with tests/run-tests.sh using your sample\nConsider lowering entropy threshold (but watch for false positives)\n\nPerformance issues:\n\nUse bash version only (skip entropy detection)\nLimit input size with head -c 10000\nRun in background: arc-shield.sh --report &\nContributing\n\nAdd new patterns to config/patterns.conf following the format:\n\nSEVERITY|Category Name|regex_pattern\n\n\nTest with tests/run-tests.sh before deploying.\n\nLicense\n\nMIT — use freely, protect your secrets.\n\nRemember: Arc-shield is your safety net, not your strategy. Train your agent to never include secrets in responses. This tool catches mistakes, not malice."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/arc-claw-bot/arc-shield",
    "publisherUrl": "https://clawhub.ai/arc-claw-bot/arc-shield",
    "owner": "arc-claw-bot",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/arc-shield",
    "downloadUrl": "https://openagent3.xyz/downloads/arc-shield",
    "agentUrl": "https://openagent3.xyz/skills/arc-shield/agent",
    "manifestUrl": "https://openagent3.xyz/skills/arc-shield/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/arc-shield/agent.md"
  }
}