{
  "schemaVersion": "1.0",
  "item": {
    "slug": "agentsecrets",
    "name": "agentsecrets",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/SteppaCodes/agentsecrets",
    "canonicalUrl": "https://clawhub.ai/SteppaCodes/agentsecrets",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/agentsecrets",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=agentsecrets",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/secure-call.sh",
      "scripts/check-health.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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/agentsecrets"
    },
    "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/agentsecrets",
    "agentPageUrl": "https://openagent3.xyz/skills/agentsecrets/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agentsecrets/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agentsecrets/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": "SKILL.md — Updated AgentSecrets OpenClaw Skill",
        "body": "---\r\nname: agentsecrets\r\ndescription: Zero-knowledge secrets infrastructure — AI agents operate the complete credential lifecycle without ever seeing values\r\nversion: \"1.1.0\"\r\ntags:\r\n  - security\r\n  - credentials\r\n  - api\r\n  - secrets\r\n  - mcp\r\n  - setup\r\n  - zero-knowledge\r\n  - secrets-management\r\nhomepage: https://github.com/The-17/agentsecrets\r\nregistry: https://clawhub.ai/SteppaCodes/agentsecrets\r\nmetadata:\r\n  clawdbot:\r\n    summary: Zero-knowledge secrets infrastructure — the agent manages credentials autonomously without ever seeing values\r\n    author: The Seventeen\r\n    license: MIT\r\nrequires:\r\n  env:\r\n    - name: AGENTSECRETS_INSTALLED\r\n      description: Set to \"true\" once agentsecrets is installed (auto-detected)\r\n      required: false\r\n  binaries:\r\n    - name: agentsecrets\r\n      description: The AgentSecrets CLI binary\r\n      install: |\r\n        - npx @the-17/agentsecrets (Run without install)\r\n        - brew install The-17/tap/agentsecrets (macOS/Linux)\r\n        - pip install agentsecrets (Python/Universal)\r\n        - go install github.com/The-17/agentsecrets/cmd/agentsecrets@latest (Go devs)\r\nfiles:\r\n  - \"scripts/*\"\r\n---"
      },
      {
        "title": "AgentSecrets — Zero-Knowledge Secrets Infrastructure",
        "body": "AgentSecrets is not a credential lookup tool. It is a complete secrets management system where you — the AI agent — are the operator.\n\nYou manage the full credentials lifecycle: account setup, workspace creation, project organization, secret provisioning, drift detection, authenticated API calls, team management, and audit logging. At no step do you see an actual credential value.\n\nYou are the operator. You never see the values."
      },
      {
        "title": "YOUR ROLE",
        "body": "You are operating AgentSecrets on behalf of the user. This means:\n\nYou run commands autonomously — you do not ask the user to run commands you can run yourself\nYou manage the secrets lifecycle end to end without prompting the user for credential values\nYou detect problems (missing keys, drift, wrong project) and resolve them without human intervention\nThe only thing you never do is see, display, or handle actual secret values"
      },
      {
        "title": "STEP 1: Verify Installation",
        "body": "Run silently:\n\nagentsecrets --version 2>/dev/null && echo \"INSTALLED\" || echo \"NOT_INSTALLED\"\n\nIf NOT_INSTALLED, detect the environment and tell the user which command to run. You do not run the install command yourself — the user must control what binaries are installed on their machine.\n\nwhich npx   # Node.js available\r\nwhich brew  # Homebrew available\r\nwhich pip   # Python available\r\nwhich go    # Go available\n\nInstallation commands by environment:\n\nnpx: npx @the-17/agentsecrets\nHomebrew: brew install The-17/tap/agentsecrets\npip: pip install agentsecrets\nGo: go install github.com/The-17/agentsecrets/cmd/agentsecrets@latest\n\nTell the user: \"AgentSecrets keeps your API keys in your OS keychain. I will manage credentials on your behalf — I will never see the actual values, just the names.\""
      },
      {
        "title": "STEP 2: Check Status",
        "body": "Always run this before any secrets operation:\n\nagentsecrets status\n\nThis returns: logged-in user, active workspace, active project, last sync time.\n\nIf NOT_INITIALIZED (no output or error):\n\nagentsecrets init --storage-mode 1\n\nGuide the user through account creation or login. After init, verify:\n\nagentsecrets status"
      },
      {
        "title": "STEP 3: Workspace Setup",
        "body": "Check available workspaces:\n\nagentsecrets workspace list\n\nIf the user needs a new workspace:\n\nagentsecrets workspace create \"Workspace Name\"\r\nagentsecrets workspace switch \"Workspace Name\"\n\nIf switching to an existing workspace:\n\nagentsecrets workspace switch \"Workspace Name\"\n\nInvite teammates when requested:\n\nagentsecrets workspace invite user@email.com"
      },
      {
        "title": "STEP 4: Project Setup",
        "body": "AgentSecrets organizes secrets by project. For OpenClaw workflows, use the dedicated OPENCLAW_MANAGER project.\n\nCheck if it exists:\n\nagentsecrets project list 2>/dev/null | grep -q \"OPENCLAW_MANAGER\" && echo \"EXISTS\" || echo \"NOT_FOUND\"\n\nIf EXISTS:\n\nagentsecrets project use OPENCLAW_MANAGER\n\nIf NOT_FOUND:\n\nagentsecrets project create OPENCLAW_MANAGER\r\nagentsecrets project use OPENCLAW_MANAGER\n\nFor non-OpenClaw workflows, use or create the appropriate project:\n\nagentsecrets project list\r\nagentsecrets project use PROJECT_NAME\r\n# or\r\nagentsecrets project create PROJECT_NAME\r\nagentsecrets project use PROJECT_NAME"
      },
      {
        "title": "STEP 5: Secret Provisioning",
        "body": "Before making any API call, verify the required secret exists:\n\nagentsecrets secrets list\n\nYou will see key names only. Never values.\n\nIf a required key is missing, never ask the user to paste the value into chat. Tell them:\n\n\"I need KEY_NAME to complete this. Please run this in your terminal:\r\nagentsecrets secrets set KEY_NAME=value\r\nLet me know when done and I will proceed.\"\n\nWait for confirmation, then verify:\n\nagentsecrets secrets list\n\nStandard key naming conventions:\n\nServiceKey NameStripe (live)STRIPE_KEY or STRIPE_LIVE_KEYStripe (test)STRIPE_TEST_KEYOpenAIOPENAI_KEYGitHubGITHUB_TOKENGoogle MapsGOOGLE_MAPS_KEYAWSAWS_ACCESS_KEY and AWS_SECRET_KEYPaystackPAYSTACK_KEYSendGridSENDGRID_KEYTwilioTWILIO_SID and TWILIO_TOKENAny otherSERVICENAME_KEY (uppercase, underscores)"
      },
      {
        "title": "STEP 6: Detect and Resolve Drift",
        "body": "Before deployment workflows or when secrets may be stale:\n\nagentsecrets secrets diff\n\nThis shows what is out of sync between local keychain and cloud. If drift is detected:\n\nagentsecrets secrets pull\n\nTo push local changes to cloud:\n\nagentsecrets secrets push"
      },
      {
        "title": "STEP 7: Make Authenticated API Calls",
        "body": "Always use agentsecrets call — never curl or direct HTTP with credentials.\n\nBasic pattern:\n\nagentsecrets call --url <URL> --method <METHOD> --<AUTH_STYLE> <KEY_NAME>\n\nDefault method is GET if --method is omitted.\n\nAuth styles:\n\nPatternFlagUse ForBearer token--bearer KEY_NAMEStripe, OpenAI, GitHub, most modern APIsCustom header--header Name=KEY_NAMESendGrid, Twilio, API GatewayQuery parameter--query param=KEY_NAMEGoogle Maps, weather APIsBasic auth--basic KEY_NAMEJira, legacy REST APIsJSON body--body-field path=KEY_NAMEOAuth flows, custom authForm field--form-field field=KEY_NAMEForm-based auth\n\nExamples:\n\n# GET request\r\nagentsecrets call --url https://api.stripe.com/v1/balance --bearer STRIPE_KEY\r\n\r\n# POST with body\r\nagentsecrets call \\\r\n  --url https://api.stripe.com/v1/charges \\\r\n  --method POST \\\r\n  --bearer STRIPE_KEY \\\r\n  --body '{\"amount\":1000,\"currency\":\"usd\",\"source\":\"tok_visa\"}'\r\n\r\n# PUT request\r\nagentsecrets call \\\r\n  --url https://api.example.com/resource/123 \\\r\n  --method PUT \\\r\n  --bearer API_KEY \\\r\n  --body '{\"field\":\"value\"}'\r\n\r\n# DELETE request\r\nagentsecrets call \\\r\n  --url https://api.example.com/resource/123 \\\r\n  --method DELETE \\\r\n  --bearer API_KEY\r\n\r\n# Custom header\r\nagentsecrets call \\\r\n  --url https://api.sendgrid.com/v3/mail/send \\\r\n  --method POST \\\r\n  --header X-Api-Key=SENDGRID_KEY \\\r\n  --body '{\"personalizations\":[...]}'\r\n\r\n# Query parameter\r\nagentsecrets call \\\r\n  --url \"https://maps.googleapis.com/maps/api/geocode/json?address=Lagos\" \\\r\n  --query key=GOOGLE_MAPS_KEY\r\n\r\n# Multiple credentials\r\nagentsecrets call \\\r\n  --url https://api.example.com/data \\\r\n  --bearer AUTH_TOKEN \\\r\n  --header X-Org-ID=ORG_SECRET\r\n\r\n# Basic auth\r\nagentsecrets call \\\r\n  --url https://jira.example.com/rest/api/2/issue \\\r\n  --basic JIRA_CREDS\r\n\r\n# Paystack\r\nagentsecrets call \\\r\n  --url https://api.paystack.co/transaction/initialize \\\r\n  --method POST \\\r\n  --bearer PAYSTACK_KEY \\\r\n  --body '{\"email\":\"user@example.com\",\"amount\":10000}'"
      },
      {
        "title": "STEP 8: Proxy Mode",
        "body": "For workflows requiring multiple calls or framework integrations:\n\nagentsecrets proxy start\r\nagentsecrets proxy status\r\nagentsecrets proxy stop\n\nWith custom port:\n\nagentsecrets proxy start --port 9000\n\nHTTP proxy pattern for any agent or framework:\n\nPOST http://localhost:8765/proxy\r\nX-AS-Target-URL: https://api.stripe.com/v1/balance\r\nX-AS-Inject-Bearer: STRIPE_KEY"
      },
      {
        "title": "STEP 9: Audit What Happened",
        "body": "After any significant operation:\n\nagentsecrets proxy logs\r\nagentsecrets proxy logs --last 20\r\nagentsecrets proxy logs --secret STRIPE_KEY\n\nOutput shows: timestamp, method, target URL, key name, status code, duration, and redaction status.\r\nNever shows values.\n\nIf you see (REDACTED) in the logs, it means AgentSecrets detected that an API echoed back the injected credential and automatically replaced it with [REDACTED_BY_AGENTSECRETS] before the response reached you. The audit reason will show credential_echo. This is expected security behavior.\n\nRaw log location: ~/.agentsecrets/proxy.log (JSONL format)"
      },
      {
        "title": "STEP 10: Environment Variable Injection",
        "body": "When a tool needs secrets as environment variables (Stripe CLI, Node.js, dev servers, SDKs), use agentsecrets env instead of agentsecrets call:\n\nagentsecrets env -- stripe mcp\r\nagentsecrets env -- node server.js\r\nagentsecrets env -- npm run dev\n\nThis resolves all secrets from the active project's keychain and injects them as environment variables into the child process. Values exist only in the child process memory — nothing is written to disk.\n\nUse this when:\n\nThe user wants to run a CLI tool that reads credentials from env vars\nYou need to wrap a native MCP server (e.g., Stripe MCP)\nThe user says \"inject secrets into my app\" or \"run X with my API keys\""
      },
      {
        "title": "Account",
        "body": "agentsecrets init                          # Create account or login\r\nagentsecrets init --storage-mode 1         # Init with keychain-only mode\r\nagentsecrets login                         # Login to existing account\r\nagentsecrets logout                        # Clear session\r\nagentsecrets status                        # Current context"
      },
      {
        "title": "Workspaces",
        "body": "agentsecrets workspace create \"Name\"       # Create workspace\r\nagentsecrets workspace list                # List all workspaces\r\nagentsecrets workspace switch \"Name\"       # Switch active workspace\r\nagentsecrets workspace invite user@email   # Invite teammate"
      },
      {
        "title": "Projects",
        "body": "agentsecrets project create NAME           # Create project\r\nagentsecrets project list                  # List projects in workspace\r\nagentsecrets project use NAME              # Set active project\r\nagentsecrets project update NAME           # Update project\r\nagentsecrets project delete NAME           # Delete project"
      },
      {
        "title": "Secrets",
        "body": "agentsecrets secrets set KEY=value         # Store secret\r\nagentsecrets secrets get KEY               # Retrieve value (user sees it, you don't)\r\nagentsecrets secrets list                  # List key names only\r\nagentsecrets secrets list --project NAME   # List keys for specific project\r\nagentsecrets secrets push                  # Upload .env to cloud (encrypted)\r\nagentsecrets secrets pull                  # Download cloud secrets to keychain\r\nagentsecrets secrets delete KEY            # Remove secret\r\nagentsecrets secrets diff                  # Compare local vs cloud"
      },
      {
        "title": "Calls and Proxy",
        "body": "agentsecrets call --url URL --bearer KEY   # One-shot authenticated call\r\nagentsecrets call --url URL --method POST --bearer KEY --body '{}'\r\nagentsecrets call --url URL --header Name=KEY\r\nagentsecrets call --url URL --query param=KEY\r\nagentsecrets call --url URL --basic KEY\r\nagentsecrets call --url URL --body-field path=KEY\r\nagentsecrets call --url URL --form-field field=KEY\r\nagentsecrets proxy start                   # Start HTTP proxy\r\nagentsecrets proxy start --port 9000       # Custom port\r\nagentsecrets proxy status                  # Check proxy status\r\nagentsecrets proxy stop                    # Stop proxy\r\nagentsecrets proxy logs                    # View audit log\r\nagentsecrets proxy logs --last N           # Last N entries\r\nagentsecrets proxy logs --secret KEY       # Filter by key name"
      },
      {
        "title": "MCP",
        "body": "agentsecrets mcp serve                     # Start MCP server\r\nagentsecrets mcp install                   # Auto-configure Claude Desktop + Cursor"
      },
      {
        "title": "Environment Injection",
        "body": "agentsecrets env -- <command> [args...]     # Inject secrets as env vars into child process\r\nagentsecrets env -- stripe mcp              # Wrap Stripe MCP\r\nagentsecrets env -- node server.js          # Wrap Node.js\r\nagentsecrets env -- npm run dev             # Wrap any dev server"
      },
      {
        "title": "Workspace Security",
        "body": "agentsecrets workspace allowlist add <domain> [domain...]  # Authorize domains (multi-domain)\r\nagentsecrets workspace allowlist list                      # List allowed domains\r\nagentsecrets workspace allowlist log                       # View blocked attempts\r\nagentsecrets workspace promote user@email.com              # Grant admin role\r\nagentsecrets workspace demote user@email.com               # Revoke admin role"
      },
      {
        "title": "First time setup",
        "body": "Run Steps 1 through 5 in sequence. Do not skip steps."
      },
      {
        "title": "\"Make an API call to X\"",
        "body": "agentsecrets status — verify context\nagentsecrets secrets list — check key exists\nagentsecrets call — make the call\nReturn response to user"
      },
      {
        "title": "\"Deploy to production\"",
        "body": "agentsecrets workspace switch production\nagentsecrets secrets diff — check for drift\nagentsecrets secrets pull — sync if needed\nRun deployment\nagentsecrets proxy logs — audit"
      },
      {
        "title": "\"Invite a teammate\"",
        "body": "agentsecrets workspace invite teammate@company.com"
      },
      {
        "title": "\"Rotate a key\"",
        "body": "Tell user to run: agentsecrets secrets set KEY_NAME=new_value in their terminal\nVerify: agentsecrets secrets list\nPush to cloud: agentsecrets secrets push"
      },
      {
        "title": "\"What keys do I have?\"",
        "body": "agentsecrets secrets list"
      },
      {
        "title": "\"Check audit log\"",
        "body": "agentsecrets proxy logs --last 50"
      },
      {
        "title": "API Call Blocked by Zero-Trust Allowlist",
        "body": "If an API call returns a 403 error stating the domain is not in the workspace allowlist:\n\nDo not bypass the proxy.\nTell the user exactly what to run in their terminal to authorize the domain:\r\nagentsecrets workspace allowlist add <domain>\r\nYou can also suggest adding multiple domains at once:\r\nagentsecrets workspace allowlist add api.stripe.com api.openai.com\r\n(Wait for their confirmation that they have entered their password and added the domain)\nRetry the API call."
      },
      {
        "title": "User Needs Secrets as Environment Variables",
        "body": "agentsecrets status — verify context\nagentsecrets secrets list — verify key exists\nagentsecrets env -- <command> — wrap the command"
      },
      {
        "title": "CRITICAL RULES",
        "body": "NEVER display, echo, print, or log an actual secret value\nNEVER ask the user to paste a key value into chat\nNEVER use curl or direct HTTP for authenticated requests — always use agentsecrets call\nALWAYS run agentsecrets status before any secrets operation in a new session\nALWAYS run agentsecrets secrets diff before deployment workflows\nALWAYS suggest the user delete any chat message where they mentioned a raw key value\nYou are the operator — manage the lifecycle autonomously, do not delegate commands back to the user unless it involves installing software, entering a password, or modifying the Zero-Trust Allowlist.\nRespect the Zero-Trust Allowlist — if a domain is blocked, instruct the user to run agentsecrets workspace allowlist add <domain>.\nWhen wrapping CLI tools that need env vars, use agentsecrets env -- <command> instead of exporting values manually.\nIf you see (REDACTED) in proxy logs, explain that AgentSecrets detected and scrubbed a credential echo — this is expected security behavior."
      },
      {
        "title": "Security Model",
        "body": "Zero-knowledge: credential values never enter your context at any step\nZero-trust: deny-by-default domain allowlist blocks unauthorized outbound requests\nResponse body redaction: if an API echoes back the injected credential, the proxy scrubs it with [REDACTED_BY_AGENTSECRETS] before it reaches you\nOS keychain: macOS Keychain, Windows Credential Manager, Linux Secret Service\nServer: stores encrypted blobs only — cannot decrypt\nAudit trail: key names only, no value field exists in the log struct\nEncryption: X25519 + AES-256-GCM + Argon2id\nRole management: only workspace admins can modify the allowlist (requires password)"
      },
      {
        "title": "Trust Statement",
        "body": "AgentSecrets is open source (MIT). Full source at https://github.com/The-17/agentsecrets. All credential resolution is local — nothing leaves the user's machine except the outbound API request itself."
      }
    ],
    "body": "SKILL.md — Updated AgentSecrets OpenClaw Skill\n---\r\nname: agentsecrets\r\ndescription: Zero-knowledge secrets infrastructure — AI agents operate the complete credential lifecycle without ever seeing values\r\nversion: \"1.1.0\"\r\ntags:\r\n  - security\r\n  - credentials\r\n  - api\r\n  - secrets\r\n  - mcp\r\n  - setup\r\n  - zero-knowledge\r\n  - secrets-management\r\nhomepage: https://github.com/The-17/agentsecrets\r\nregistry: https://clawhub.ai/SteppaCodes/agentsecrets\r\nmetadata:\r\n  clawdbot:\r\n    summary: Zero-knowledge secrets infrastructure — the agent manages credentials autonomously without ever seeing values\r\n    author: The Seventeen\r\n    license: MIT\r\nrequires:\r\n  env:\r\n    - name: AGENTSECRETS_INSTALLED\r\n      description: Set to \"true\" once agentsecrets is installed (auto-detected)\r\n      required: false\r\n  binaries:\r\n    - name: agentsecrets\r\n      description: The AgentSecrets CLI binary\r\n      install: |\r\n        - npx @the-17/agentsecrets (Run without install)\r\n        - brew install The-17/tap/agentsecrets (macOS/Linux)\r\n        - pip install agentsecrets (Python/Universal)\r\n        - go install github.com/The-17/agentsecrets/cmd/agentsecrets@latest (Go devs)\r\nfiles:\r\n  - \"scripts/*\"\r\n---\n\nAgentSecrets — Zero-Knowledge Secrets Infrastructure\n\nAgentSecrets is not a credential lookup tool. It is a complete secrets management system where you — the AI agent — are the operator.\n\nYou manage the full credentials lifecycle: account setup, workspace creation, project organization, secret provisioning, drift detection, authenticated API calls, team management, and audit logging. At no step do you see an actual credential value.\n\nYou are the operator. You never see the values.\n\nYOUR ROLE\n\nYou are operating AgentSecrets on behalf of the user. This means:\n\nYou run commands autonomously — you do not ask the user to run commands you can run yourself\nYou manage the secrets lifecycle end to end without prompting the user for credential values\nYou detect problems (missing keys, drift, wrong project) and resolve them without human intervention\nThe only thing you never do is see, display, or handle actual secret values\nSTEP 1: Verify Installation\n\nRun silently:\n\nagentsecrets --version 2>/dev/null && echo \"INSTALLED\" || echo \"NOT_INSTALLED\"\n\n\nIf NOT_INSTALLED, detect the environment and tell the user which command to run. You do not run the install command yourself — the user must control what binaries are installed on their machine.\n\nwhich npx   # Node.js available\r\nwhich brew  # Homebrew available\r\nwhich pip   # Python available\r\nwhich go    # Go available\n\n\nInstallation commands by environment:\n\nnpx: npx @the-17/agentsecrets\nHomebrew: brew install The-17/tap/agentsecrets\npip: pip install agentsecrets\nGo: go install github.com/The-17/agentsecrets/cmd/agentsecrets@latest\n\nTell the user: \"AgentSecrets keeps your API keys in your OS keychain. I will manage credentials on your behalf — I will never see the actual values, just the names.\"\n\nSTEP 2: Check Status\n\nAlways run this before any secrets operation:\n\nagentsecrets status\n\n\nThis returns: logged-in user, active workspace, active project, last sync time.\n\nIf NOT_INITIALIZED (no output or error):\n\nagentsecrets init --storage-mode 1\n\n\nGuide the user through account creation or login. After init, verify:\n\nagentsecrets status\n\nSTEP 3: Workspace Setup\n\nCheck available workspaces:\n\nagentsecrets workspace list\n\n\nIf the user needs a new workspace:\n\nagentsecrets workspace create \"Workspace Name\"\r\nagentsecrets workspace switch \"Workspace Name\"\n\n\nIf switching to an existing workspace:\n\nagentsecrets workspace switch \"Workspace Name\"\n\n\nInvite teammates when requested:\n\nagentsecrets workspace invite user@email.com\n\nSTEP 4: Project Setup\n\nAgentSecrets organizes secrets by project. For OpenClaw workflows, use the dedicated OPENCLAW_MANAGER project.\n\nCheck if it exists:\n\nagentsecrets project list 2>/dev/null | grep -q \"OPENCLAW_MANAGER\" && echo \"EXISTS\" || echo \"NOT_FOUND\"\n\n\nIf EXISTS:\n\nagentsecrets project use OPENCLAW_MANAGER\n\n\nIf NOT_FOUND:\n\nagentsecrets project create OPENCLAW_MANAGER\r\nagentsecrets project use OPENCLAW_MANAGER\n\n\nFor non-OpenClaw workflows, use or create the appropriate project:\n\nagentsecrets project list\r\nagentsecrets project use PROJECT_NAME\r\n# or\r\nagentsecrets project create PROJECT_NAME\r\nagentsecrets project use PROJECT_NAME\n\nSTEP 5: Secret Provisioning\n\nBefore making any API call, verify the required secret exists:\n\nagentsecrets secrets list\n\n\nYou will see key names only. Never values.\n\nIf a required key is missing, never ask the user to paste the value into chat. Tell them:\n\n\"I need KEY_NAME to complete this. Please run this in your terminal: agentsecrets secrets set KEY_NAME=value Let me know when done and I will proceed.\"\n\nWait for confirmation, then verify:\n\nagentsecrets secrets list\n\n\nStandard key naming conventions:\n\nService\tKey Name\nStripe (live)\tSTRIPE_KEY or STRIPE_LIVE_KEY\nStripe (test)\tSTRIPE_TEST_KEY\nOpenAI\tOPENAI_KEY\nGitHub\tGITHUB_TOKEN\nGoogle Maps\tGOOGLE_MAPS_KEY\nAWS\tAWS_ACCESS_KEY and AWS_SECRET_KEY\nPaystack\tPAYSTACK_KEY\nSendGrid\tSENDGRID_KEY\nTwilio\tTWILIO_SID and TWILIO_TOKEN\nAny other\tSERVICENAME_KEY (uppercase, underscores)\nSTEP 6: Detect and Resolve Drift\n\nBefore deployment workflows or when secrets may be stale:\n\nagentsecrets secrets diff\n\n\nThis shows what is out of sync between local keychain and cloud. If drift is detected:\n\nagentsecrets secrets pull\n\n\nTo push local changes to cloud:\n\nagentsecrets secrets push\n\nSTEP 7: Make Authenticated API Calls\n\nAlways use agentsecrets call — never curl or direct HTTP with credentials.\n\nBasic pattern:\n\nagentsecrets call --url <URL> --method <METHOD> --<AUTH_STYLE> <KEY_NAME>\n\n\nDefault method is GET if --method is omitted.\n\nAuth styles:\n\nPattern\tFlag\tUse For\nBearer token\t--bearer KEY_NAME\tStripe, OpenAI, GitHub, most modern APIs\nCustom header\t--header Name=KEY_NAME\tSendGrid, Twilio, API Gateway\nQuery parameter\t--query param=KEY_NAME\tGoogle Maps, weather APIs\nBasic auth\t--basic KEY_NAME\tJira, legacy REST APIs\nJSON body\t--body-field path=KEY_NAME\tOAuth flows, custom auth\nForm field\t--form-field field=KEY_NAME\tForm-based auth\n\nExamples:\n\n# GET request\r\nagentsecrets call --url https://api.stripe.com/v1/balance --bearer STRIPE_KEY\r\n\r\n# POST with body\r\nagentsecrets call \\\r\n  --url https://api.stripe.com/v1/charges \\\r\n  --method POST \\\r\n  --bearer STRIPE_KEY \\\r\n  --body '{\"amount\":1000,\"currency\":\"usd\",\"source\":\"tok_visa\"}'\r\n\r\n# PUT request\r\nagentsecrets call \\\r\n  --url https://api.example.com/resource/123 \\\r\n  --method PUT \\\r\n  --bearer API_KEY \\\r\n  --body '{\"field\":\"value\"}'\r\n\r\n# DELETE request\r\nagentsecrets call \\\r\n  --url https://api.example.com/resource/123 \\\r\n  --method DELETE \\\r\n  --bearer API_KEY\r\n\r\n# Custom header\r\nagentsecrets call \\\r\n  --url https://api.sendgrid.com/v3/mail/send \\\r\n  --method POST \\\r\n  --header X-Api-Key=SENDGRID_KEY \\\r\n  --body '{\"personalizations\":[...]}'\r\n\r\n# Query parameter\r\nagentsecrets call \\\r\n  --url \"https://maps.googleapis.com/maps/api/geocode/json?address=Lagos\" \\\r\n  --query key=GOOGLE_MAPS_KEY\r\n\r\n# Multiple credentials\r\nagentsecrets call \\\r\n  --url https://api.example.com/data \\\r\n  --bearer AUTH_TOKEN \\\r\n  --header X-Org-ID=ORG_SECRET\r\n\r\n# Basic auth\r\nagentsecrets call \\\r\n  --url https://jira.example.com/rest/api/2/issue \\\r\n  --basic JIRA_CREDS\r\n\r\n# Paystack\r\nagentsecrets call \\\r\n  --url https://api.paystack.co/transaction/initialize \\\r\n  --method POST \\\r\n  --bearer PAYSTACK_KEY \\\r\n  --body '{\"email\":\"user@example.com\",\"amount\":10000}'\n\nSTEP 8: Proxy Mode\n\nFor workflows requiring multiple calls or framework integrations:\n\nagentsecrets proxy start\r\nagentsecrets proxy status\r\nagentsecrets proxy stop\n\n\nWith custom port:\n\nagentsecrets proxy start --port 9000\n\n\nHTTP proxy pattern for any agent or framework:\n\nPOST http://localhost:8765/proxy\r\nX-AS-Target-URL: https://api.stripe.com/v1/balance\r\nX-AS-Inject-Bearer: STRIPE_KEY\n\nSTEP 9: Audit What Happened\n\nAfter any significant operation:\n\nagentsecrets proxy logs\r\nagentsecrets proxy logs --last 20\r\nagentsecrets proxy logs --secret STRIPE_KEY\n\n\nOutput shows: timestamp, method, target URL, key name, status code, duration, and redaction status. Never shows values.\n\nIf you see (REDACTED) in the logs, it means AgentSecrets detected that an API echoed back the injected credential and automatically replaced it with [REDACTED_BY_AGENTSECRETS] before the response reached you. The audit reason will show credential_echo. This is expected security behavior.\n\nRaw log location: ~/.agentsecrets/proxy.log (JSONL format)\n\nSTEP 10: Environment Variable Injection\n\nWhen a tool needs secrets as environment variables (Stripe CLI, Node.js, dev servers, SDKs), use agentsecrets env instead of agentsecrets call:\n\nagentsecrets env -- stripe mcp\r\nagentsecrets env -- node server.js\r\nagentsecrets env -- npm run dev\n\n\nThis resolves all secrets from the active project's keychain and injects them as environment variables into the child process. Values exist only in the child process memory — nothing is written to disk.\n\nUse this when:\n\nThe user wants to run a CLI tool that reads credentials from env vars\nYou need to wrap a native MCP server (e.g., Stripe MCP)\nThe user says \"inject secrets into my app\" or \"run X with my API keys\"\nFULL COMMAND REFERENCE\nAccount\nagentsecrets init                          # Create account or login\r\nagentsecrets init --storage-mode 1         # Init with keychain-only mode\r\nagentsecrets login                         # Login to existing account\r\nagentsecrets logout                        # Clear session\r\nagentsecrets status                        # Current context\n\nWorkspaces\nagentsecrets workspace create \"Name\"       # Create workspace\r\nagentsecrets workspace list                # List all workspaces\r\nagentsecrets workspace switch \"Name\"       # Switch active workspace\r\nagentsecrets workspace invite user@email   # Invite teammate\n\nProjects\nagentsecrets project create NAME           # Create project\r\nagentsecrets project list                  # List projects in workspace\r\nagentsecrets project use NAME              # Set active project\r\nagentsecrets project update NAME           # Update project\r\nagentsecrets project delete NAME           # Delete project\n\nSecrets\nagentsecrets secrets set KEY=value         # Store secret\r\nagentsecrets secrets get KEY               # Retrieve value (user sees it, you don't)\r\nagentsecrets secrets list                  # List key names only\r\nagentsecrets secrets list --project NAME   # List keys for specific project\r\nagentsecrets secrets push                  # Upload .env to cloud (encrypted)\r\nagentsecrets secrets pull                  # Download cloud secrets to keychain\r\nagentsecrets secrets delete KEY            # Remove secret\r\nagentsecrets secrets diff                  # Compare local vs cloud\n\nCalls and Proxy\nagentsecrets call --url URL --bearer KEY   # One-shot authenticated call\r\nagentsecrets call --url URL --method POST --bearer KEY --body '{}'\r\nagentsecrets call --url URL --header Name=KEY\r\nagentsecrets call --url URL --query param=KEY\r\nagentsecrets call --url URL --basic KEY\r\nagentsecrets call --url URL --body-field path=KEY\r\nagentsecrets call --url URL --form-field field=KEY\r\nagentsecrets proxy start                   # Start HTTP proxy\r\nagentsecrets proxy start --port 9000       # Custom port\r\nagentsecrets proxy status                  # Check proxy status\r\nagentsecrets proxy stop                    # Stop proxy\r\nagentsecrets proxy logs                    # View audit log\r\nagentsecrets proxy logs --last N           # Last N entries\r\nagentsecrets proxy logs --secret KEY       # Filter by key name\n\nMCP\nagentsecrets mcp serve                     # Start MCP server\r\nagentsecrets mcp install                   # Auto-configure Claude Desktop + Cursor\n\nEnvironment Injection\nagentsecrets env -- <command> [args...]     # Inject secrets as env vars into child process\r\nagentsecrets env -- stripe mcp              # Wrap Stripe MCP\r\nagentsecrets env -- node server.js          # Wrap Node.js\r\nagentsecrets env -- npm run dev             # Wrap any dev server\n\nWorkspace Security\nagentsecrets workspace allowlist add <domain> [domain...]  # Authorize domains (multi-domain)\r\nagentsecrets workspace allowlist list                      # List allowed domains\r\nagentsecrets workspace allowlist log                       # View blocked attempts\r\nagentsecrets workspace promote user@email.com              # Grant admin role\r\nagentsecrets workspace demote user@email.com               # Revoke admin role\n\nHANDLING COMMON SCENARIOS\nFirst time setup\n\nRun Steps 1 through 5 in sequence. Do not skip steps.\n\n\"Make an API call to X\"\nagentsecrets status — verify context\nagentsecrets secrets list — check key exists\nagentsecrets call — make the call\nReturn response to user\n\"Deploy to production\"\nagentsecrets workspace switch production\nagentsecrets secrets diff — check for drift\nagentsecrets secrets pull — sync if needed\nRun deployment\nagentsecrets proxy logs — audit\n\"Invite a teammate\"\nagentsecrets workspace invite teammate@company.com\n\n\"Rotate a key\"\nTell user to run: agentsecrets secrets set KEY_NAME=new_value in their terminal\nVerify: agentsecrets secrets list\nPush to cloud: agentsecrets secrets push\n\"What keys do I have?\"\nagentsecrets secrets list\n\n\"Check audit log\"\nagentsecrets proxy logs --last 50\n\nAPI Call Blocked by Zero-Trust Allowlist\n\nIf an API call returns a 403 error stating the domain is not in the workspace allowlist:\n\nDo not bypass the proxy.\nTell the user exactly what to run in their terminal to authorize the domain: agentsecrets workspace allowlist add <domain> You can also suggest adding multiple domains at once: agentsecrets workspace allowlist add api.stripe.com api.openai.com (Wait for their confirmation that they have entered their password and added the domain)\nRetry the API call.\nUser Needs Secrets as Environment Variables\nagentsecrets status — verify context\nagentsecrets secrets list — verify key exists\nagentsecrets env -- <command> — wrap the command\nCRITICAL RULES\nNEVER display, echo, print, or log an actual secret value\nNEVER ask the user to paste a key value into chat\nNEVER use curl or direct HTTP for authenticated requests — always use agentsecrets call\nALWAYS run agentsecrets status before any secrets operation in a new session\nALWAYS run agentsecrets secrets diff before deployment workflows\nALWAYS suggest the user delete any chat message where they mentioned a raw key value\nYou are the operator — manage the lifecycle autonomously, do not delegate commands back to the user unless it involves installing software, entering a password, or modifying the Zero-Trust Allowlist.\nRespect the Zero-Trust Allowlist — if a domain is blocked, instruct the user to run agentsecrets workspace allowlist add <domain>.\nWhen wrapping CLI tools that need env vars, use agentsecrets env -- <command> instead of exporting values manually.\nIf you see (REDACTED) in proxy logs, explain that AgentSecrets detected and scrubbed a credential echo — this is expected security behavior.\nSecurity Model\nZero-knowledge: credential values never enter your context at any step\nZero-trust: deny-by-default domain allowlist blocks unauthorized outbound requests\nResponse body redaction: if an API echoes back the injected credential, the proxy scrubs it with [REDACTED_BY_AGENTSECRETS] before it reaches you\nOS keychain: macOS Keychain, Windows Credential Manager, Linux Secret Service\nServer: stores encrypted blobs only — cannot decrypt\nAudit trail: key names only, no value field exists in the log struct\nEncryption: X25519 + AES-256-GCM + Argon2id\nRole management: only workspace admins can modify the allowlist (requires password)\nTrust Statement\n\nAgentSecrets is open source (MIT). Full source at https://github.com/The-17/agentsecrets. All credential resolution is local — nothing leaves the user's machine except the outbound API request itself."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/SteppaCodes/agentsecrets",
    "publisherUrl": "https://clawhub.ai/SteppaCodes/agentsecrets",
    "owner": "SteppaCodes",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/agentsecrets",
    "downloadUrl": "https://openagent3.xyz/downloads/agentsecrets",
    "agentUrl": "https://openagent3.xyz/skills/agentsecrets/agent",
    "manifestUrl": "https://openagent3.xyz/skills/agentsecrets/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/agentsecrets/agent.md"
  }
}