{"data":{"skill":{"slug":"internet-court-x402","name":"x402 Payments skill","icon":"📦","repo":"https://github.com/internet-court/internet-court-skill/tree/main/vendored/chaingpt/x402","status":"approved","author":"internet-court","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"6161cd74-eec3-4a23-a7f0-8cfbaded8838","skill_id":"6651aa7f-996b-43d4-af41-e54240361c58","version":2,"content_hash":"v3:3f6e026a3363e0954ede7bef0cfe88d4475de137:b2bf1e7ba3a3efe747929a11d6078986bb46974bd50ac203045555a98165815b:3fa9bb11ad27998a811645f2efc138a5ba5c20e4569d6a237816eb844c827f1a:736b696c6c732f696e7465726e65742d636f7572742f78343032:644761e101168d3b983c8e3de20984f0","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 19 static findings are false positives caused by Markdown backticks, not shell execution. The skill documents user-authorized USDC payment flows, so users should inspect payment terms before signing.","remediation":[{"issue":"Users can authorize real USDC payments when following the client flow.","severity":"medium","suggestion":"Require clear confirmation of token, amount, recipient, network, and expiry before requesting a wallet signature or retrying a paid request."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":53,"line_start":53}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Financial Transaction Capability","locations":[{"file":"SKILL.md","line_end":42,"line_start":39}],"confidence":0.94,"description":"The documented flow can create signed payment authorizations and complete paid endpoint requests. A user could spend USDC after approving a wallet signature.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The client flow explicitly directs a payer to sign typed data, construct an X-PAYMENT header, and retry a paid request. This is an intended financial capability, not evidence of credential theft or hidden transfers."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":55,"audit_model":"claude","audited_at":"2026-07-20T03:34:33.853+00:00","created_at":"2026-07-20T03:46:58.055589+00:00","static_findings":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"x402 turns HTTP `402 Payment Required` into a real payment rail for agents: a","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"server replies `402` with what it wants paid; the client signs an off-chain","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"authorization and retries with an `X-PAYMENT` header; a facilitator broadcasts","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"it. Settlement uses EIP-3009 `transferWithAuthorization` (e.g. USDC on Base) —","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `chaingpt_x402_decode` | Decode a 402 body or X-PAYMENT header into human terms (amount/token/reci","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `chaingpt_x402_build_payment` | Build the UNSIGNED EIP-3009 typed data; pass a signature back to g","category":"external_commands","line_end":30,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `chaingpt_x402_facilitator` | Call a facilitator: `supported` / `verify` / `settle`. |","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `chaingpt_x402_create_requirements` | Server side: generate the `PaymentRequirements` + 402 body t","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `chaingpt_x402_fetch` | The whole client loop in one tool: fetch a URL; on 402 it decodes the chal","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `chaingpt_x402_fetch url=<resource> from=<payer>` → on 402 you get the decoded price/payee AND th","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `chaingpt_x402_build_payment from=<payer> requirements=<from step 1> signature=0x...` → the `X-PA","category":"external_commands","line_end":41,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `chaingpt_x402_fetch url=<resource> xPaymentHeader=<header>` → the paid response.","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Manual path (same primitives, finer control): `_decode` → `_build_payment` → sign → `_build_payment ","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`chaingpt_x402_create_requirements network=base amount=0.01 payTo=<you>` → serve","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"facilitator (`chaingpt_x402_facilitator`).","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Known EIP-3009 tokens: USDC on `base` and `base-sepolia`. For other tokens pass","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"full `PaymentRequirements` (with `asset` + `extra.name`/`extra.version`).","category":"external_commands","line_end":53,"severity":"medium","line_start":53},{"id":"blocker:SKILL.md:33:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"| `chaingpt_x402_fetch` | The whole client loop in one tool: fetch a URL; on 402 it decodes the chal","category":"blocker","line_end":33,"severity":"low","line_start":33},{"id":"blocker:SKILL.md:42:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"4. `chaingpt_x402_fetch url=<resource> xPaymentHeader=<header>` → the paid response.","category":"blocker","line_end":42,"severity":"low","line_start":42}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:33:system-reconnaissance","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:42:system-reconnaissance","reason":"This is Markdown inline-code formatting for protocol names or tool examples, not Ruby or shell execution. The skill contains no executable command or command-construction instruction.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Financial Transaction Capability","severity":"medium","locations":[{"file":"SKILL.md","line_end":42,"line_start":39}],"confidence":0.94,"description":"The documented flow can create signed payment authorizations and complete paid endpoint requests. A user could spend USDC after approving a wallet signature.","confidence_reasoning":"The client flow explicitly directs a payer to sign typed data, construct an X-PAYMENT header, and retry a paid request. This is an intended financial capability, not evidence of credential theft or hidden transfers."}],"subject_marketplace_commit_sha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","subject_content_hash":"b2bf1e7ba3a3efe747929a11d6078986bb46974bd50ac203045555a98165815b","subject_tree_hash":"3fa9bb11ad27998a811645f2efc138a5ba5c20e4569d6a237816eb844c827f1a","subject_plugin_path":"skills/internet-court/x402","audit_payload_hash":"644761e101168d3b983c8e3de20984f0","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","contentHash":"b2bf1e7ba3a3efe747929a11d6078986bb46974bd50ac203045555a98165815b","treeHash":"3fa9bb11ad27998a811645f2efc138a5ba5c20e4569d6a237816eb844c827f1a","pluginPath":"skills/internet-court/x402","auditPayloadHash":"644761e101168d3b983c8e3de20984f0"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"unavailable","url":null,"status":null},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"unavailable","verificationState":"not_verified"},"isLatest":true}}