{"data":{"skill":{"slug":"okx-okx-agentic-wallet","name":"okx-agentic-wallet","icon":"📦","repo":"https://github.com/okx/onchainos-skills/tree/35a8c41cc6516844ae7dbedf02616bf4ea97d6ed/skills/okx-agentic-wallet","status":"approved","author":"okx","authorVersion":"4.6.6","skillstoreRevision":1},"audit":{"id":"8e40ac42-5783-49d1-b635-ade62aea2d19","skill_id":"263eacbf-1424-4095-baa2-f4aa5a1a88c7","version":1,"content_hash":"v3:68ad52c83048aa55fba46a90f4f6c6d9922a47b0:d94867982252ae4954c3cadbb836faffa56517bb8baa654eceb19b93a86faeb1:b5ea83c382a060f77e77cb39b0dd2c8aad25bf929156fc017bcb3662881430fe:736b696c6c732f6f6b782f6f6b782d6167656e7469632d77616c6c6574:1e960ab92cf0df916ca8bacfd8e4a654","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"All 116 static matches are false positives for the reported patterns: documentation formatting, wallet identifiers, protective secret references, and legitimate paths or URLs. Semantic review found failed-scan continuation, conflicting swap-block rules, returned-command execution without specified validation, and an unpinned preflight installer. No evidence found of credential exfiltration or audit-directed prompt injection; external CLI and backend implementations were not verified.","remediation":[{"issue":"Swap token scanning continues automatically when verification fails or a chain is unsupported.","severity":"high","suggestion":"Pause execution until scanning succeeds, or require separate informed consent for each unverified trade. Never treat unavailable results as approval."},{"issue":"Swap rules allow explicit overrides of BLOCK verdicts despite mandatory stop rules elsewhere.","severity":"high","suggestion":"Make BLOCK non-overridable throughout the skill. Reserve warning confirmations for WARN results and document one consistent policy."},{"issue":"Returned next-step command strings are promoted to executable instructions without a defined validation boundary.","severity":"high","suggestion":"Use allowlisted structured actions and validated argument arrays. Reject shell syntax, unknown subcommands, and changes to the confirmed wallet, destination, or amount."},{"issue":"Mandatory preflight runs an automatically approved registry installer without pinning its package version.","severity":"medium","suggestion":"Pin a reviewed installer version and verify package provenance. Require installation consent and prefer an already verified local CLI."}],"risk_factor_evidence":[{"factor":"filesystem","evidence":[{"file":"references/audit-log.md","line_end":9,"line_start":9},{"file":"references/audit-log.md","line_end":9,"line_start":9},{"file":"references/security.md","line_end":68,"line_start":68},{"file":"references/security.md","line_end":68,"line_start":68},{"file":"references/wallet.md","line_end":55,"line_start":55},{"file":"references/wallet.md","line_end":56,"line_start":56}]},{"factor":"external_commands","evidence":[{"file":"references/bridge.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":51,"line_start":51},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":64,"line_start":64},{"file":"SKILL.md","line_end":65,"line_start":65},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":67,"line_start":67},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":90,"line_start":90},{"file":"SKILL.md","line_end":91,"line_start":91},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":98,"line_start":98},{"file":"SKILL.md","line_end":99,"line_start":99},{"file":"SKILL.md","line_end":100,"line_start":100},{"file":"SKILL.md","line_end":101,"line_start":101},{"file":"SKILL.md","line_end":104,"line_start":104}]},{"factor":"network","evidence":[{"file":"references/gas-station.md","line_end":54,"line_start":54},{"file":"references/security-cli-reference.md","line_end":55,"line_start":55},{"file":"references/swap.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":8,"line_start":8}]}],"critical_findings":[],"high_findings":[{"title":"Swap Security Scans Fail Open","locations":[{"file":"references/security.md","line_end":35,"line_start":35}],"confidence":0.99,"description":"Swap token-scan failures automatically continue with a warning, and unsupported scan chains do not block. Trading can proceed without completed token-risk verification.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The swap exception explicitly removes the general retry-or-consent pause after scan failure. This creates a verification gap, not evidence of malicious intent."},{"title":"Conflicting Rules Permit Blocked Swap Overrides","locations":[{"file":"references/swap.md","line_end":58,"line_start":58},{"file":"references/swap.md","line_end":120,"line_start":106},{"file":"SKILL.md","line_end":101,"line_start":99}],"confidence":0.98,"description":"The swap flow says blocked routes must not broadcast, but later rules say BLOCK requires an explicit override, including blacklisted addresses. This weakens mandatory stops.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"Directly conflicting instructions distinguish neither overridable warnings nor immutable blocks. An agent can interpret later override guidance as authorization to trade blocked assets."},{"title":"Returned Command Strings Cross the Execution Boundary","locations":[{"file":"SKILL.md","line_end":86,"line_start":80},{"file":"references/bridge.md","line_end":89,"line_start":82},{"file":"references/bridge-cli-reference.md","line_end":92,"line_start":92}],"confidence":0.86,"description":"The skill follows returned next commands and uses returned bridge-status commands verbatim. It specifies no command allowlist or argument validation before execution.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The execution instructions directly trust returned command strings despite declaring CLI output untrusted. Exploitation depends on influencing those fields; no injected payload was found."}],"medium_findings":[{"title":"Mandatory Preflight Runs an Unpinned Installer","locations":[{"file":"SKILL.md","line_end":47,"line_start":45}],"confidence":0.97,"description":"The required preflight delegates to an automatically approved npx installer without a package version. Registry-delivered code runs before wallet operations without separate installation consent.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The cited line mandates the linked preflight, which runs npx -y @okxweb3/onchainos-installer. Its skill-version argument does not pin the installer package."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":32,"total_lines":3264,"audit_model":"codex","audited_at":"2026-10-28T14:47:55.554+00:00","created_at":"2026-10-28T16:17:50.693259+00:00","static_findings":[{"id":"sensitive:references/account-faq.md:25:crypto-seed-private-key-mention","file":"references/account-faq.md","pattern":"Crypto seed/private key mention","snippet":"> OKX Agentic Wallet uses TEE (Trusted Execution Environment) for transaction signing. The private k","category":"sensitive","line_end":25,"severity":"high","line_start":25},{"id":"filesystem:references/audit-log.md:9:hidden-file-in-home-directory","file":"references/audit-log.md","pattern":"Hidden file in home directory","snippet":"1. **Log file path**: `~/.onchainos/audit.jsonl` (or `$ONCHAINOS_HOME/audit.jsonl` if the env var is","category":"filesystem","line_end":9,"severity":"high","line_start":9},{"id":"filesystem:references/audit-log.md:9:hidden-file-access","file":"references/audit-log.md","pattern":"Hidden file access","snippet":"1. **Log file path**: `~/.onchainos/audit.jsonl` (or `$ONCHAINOS_HOME/audit.jsonl` if the env var is","category":"filesystem","line_end":9,"severity":"medium","line_start":9},{"id":"blocker:references/brc20-cli-reference.md:89:system-reconnaissance","file":"references/brc20-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos wallet history --chain bitcoin (--tx-hash <hash> | --order-id <id>)","category":"blocker","line_end":89,"severity":"low","line_start":89},{"id":"blocker:references/brc20-cli-reference.md:157:system-reconnaissance","file":"references/brc20-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos wallet inscription status --chain bitcoin (--tx-hash <hash> | --order-id <id>)","category":"blocker","line_end":157,"severity":"low","line_start":157},{"id":"blocker:references/bridge-cli-reference.md:77:system-reconnaissance","file":"references/bridge-cli-reference.md","pattern":"System reconnaissance","snippet":"Manual calldata (external wallet signs): `quote` → `approve` (sign+broadcast `tx`) → `swap` (sign+br","category":"blocker","line_end":77,"severity":"low","line_start":77},{"id":"blocker:references/bridge-cli-reference.md:92:system-reconnaissance","file":"references/bridge-cli-reference.md","pattern":"System reconnaissance","snippet":"| `nextSteps.checkBridgeStatus` | `onchainos cross-chain status --tx-hash <fromTxHash> --bridge-id <","category":"blocker","line_end":92,"severity":"low","line_start":92},{"id":"blocker:references/bridge-cli-reference.md:116:system-reconnaissance","file":"references/bridge-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos cross-chain status --tx-hash 0x... --bridge-id 636 --from-chain 42161","category":"blocker","line_end":116,"severity":"low","line_start":116},{"id":"blocker:references/bridge-troubleshooting.md:51:system-reconnaissance","file":"references/bridge-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 82106 | Bridge id not supported / wrong → re-run `quote` without `--bridge-id`. |","category":"blocker","line_end":51,"severity":"low","line_start":51},{"id":"blocker:references/bridge-troubleshooting.md:53:system-reconnaissance","file":"references/bridge-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 82201 | Wallet address format invalid → check; convert EVM to lowercase if mixed-case. |","category":"blocker","line_end":53,"severity":"low","line_start":53},{"id":"blocker:references/bridge-troubleshooting.md:54:system-reconnaissance","file":"references/bridge-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 82202 | Receive address invalid (family mismatch) → ask for correct format. |","category":"blocker","line_end":54,"severity":"low","line_start":54},{"id":"blocker:references/bridge-troubleshooting.md:84:system-reconnaissance","file":"references/bridge-troubleshooting.md","pattern":"System reconnaissance","snippet":"- **Approval wait timed out inside `execute`**: CLI polls per-chain and bails; tx may still be pendi","category":"blocker","line_end":84,"severity":"low","line_start":84},{"id":"blocker:references/bridge-troubleshooting.md:93:system-reconnaissance","file":"references/bridge-troubleshooting.md","pattern":"System reconnaissance","snippet":"Interactive chat: do NOT auto-loop — run `status` once per request, report, and if not `SUCCESS` tel","category":"blocker","line_end":93,"severity":"low","line_start":93},{"id":"external_commands:references/bridge.md:38:ruby-shell-backtick-execution","file":"references/bridge.md","pattern":"Ruby/shell backtick execution","snippet":"| n | `bridgeName` | `toTokenAmount` | `minimumReceived` | `crossChainFee` | `estimateTime` | `needA","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"blocker:references/bridge.md:31:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"--readable-amount <amt> --wallet <addr> --check-approve [--bridge-id <id>] [--sort <0|1|2>] [--allow","category":"blocker","line_end":31,"severity":"low","line_start":31},{"id":"blocker:references/bridge.md:52:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"--readable-amount <amt> --wallet <addr> [--bridge-id <id> | --route-index <n>] [--sort <0|1|2>] [--r","category":"blocker","line_end":52,"severity":"low","line_start":52},{"id":"blocker:references/bridge.md:78:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"- Run directly in terminal — paste verbatim (--bridge-id and --from-chain are REQUIRED):","category":"blocker","line_end":78,"severity":"low","line_start":78},{"id":"blocker:references/bridge.md:86:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"onchainos cross-chain status --tx-hash <fromTxHash> --bridge-id <bridgeId> --from-chain <fromChainIn","category":"blocker","line_end":86,"severity":"low","line_start":86},{"id":"blocker:references/bridge.md:87:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"onchainos cross-chain status --order-id <swapOrderId> --bridge-id <bridgeId> --from-chain <fromChain","category":"blocker","line_end":87,"severity":"low","line_start":87},{"id":"blocker:references/bridge.md:109:system-reconnaissance","file":"references/bridge.md","pattern":"System reconnaissance","snippet":"| `--allow-bridges` / `--deny-bridges` | Restricts the bridge set | Only when the user said \"use onl","category":"blocker","line_end":109,"severity":"low","line_start":109},{"id":"blocker:references/funding.md:71:system-reconnaissance","file":"references/funding.md","pattern":"System reconnaissance","snippet":"did not return.","category":"blocker","line_end":71,"severity":"low","line_start":71},{"id":"blocker:references/gas-station-troubleshooting.md:14:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"This transaction exceeds the Gas Station per-transaction cap (100,000 U), so Gas cannot be paid with","category":"blocker","line_end":14,"severity":"low","line_start":14},{"id":"blocker:references/gas-station-troubleshooting.md:35:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"This one is paid via Gas Station, so the hash comes back slightly later than for normal transactions","category":"blocker","line_end":35,"severity":"low","line_start":35},{"id":"blocker:references/gas-station-troubleshooting.md:48:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"Trigger: user says any equivalent of \"check order {orderId}\" / \"is that last transaction done?\" (any","category":"blocker","line_end":48,"severity":"low","line_start":48},{"id":"blocker:references/gas-station-troubleshooting.md:60:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"1. `serviceChargeSymbol` present: `{serviceCharge_readable} {serviceChargeSymbol} (≈ ${serviceCharge","category":"blocker","line_end":60,"severity":"low","line_start":60},{"id":"blocker:references/gas-station-troubleshooting.md:61:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"2. only `serviceChargeUsd`: `≈ ${serviceChargeUsd} (paid via Gas Station)`.","category":"blocker","line_end":61,"severity":"low","line_start":61},{"id":"blocker:references/gas-station-troubleshooting.md:62:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"3. even that empty: `paid via Gas Station (amount not returned)`.","category":"blocker","line_end":62,"severity":"low","line_start":62},{"id":"blocker:references/gas-station-troubleshooting.md:71:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"⚠️ Order {orderId} did not complete.","category":"blocker","line_end":71,"severity":"low","line_start":71},{"id":"blocker:references/gas-station-troubleshooting.md:73:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"The transaction was broadcast via Gas Station, but the Relayer did not finalize it on-chain within 1","category":"blocker","line_end":73,"severity":"low","line_start":73},{"id":"blocker:references/gas-station-troubleshooting.md:88:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"Trigger: `wallet send` / `contract-call` bails with a message containing \"Gas Station does not suppo","category":"blocker","line_end":88,"severity":"low","line_start":88},{"id":"blocker:references/gas-station-troubleshooting.md:90:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"This transaction type isn't eligible for Gas Station — the network fee must be paid in native SOL.","category":"blocker","line_end":90,"severity":"low","line_start":90},{"id":"blocker:references/gas-station-troubleshooting.md:92:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"Gas Station currently supports only transfers and swaps. Other types such as deposits and staking ca","category":"blocker","line_end":92,"severity":"low","line_start":92},{"id":"blocker:references/gas-station-troubleshooting.md:162:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"**Why did I receive a small amount of SOL from this transaction?**","category":"blocker","line_end":162,"severity":"low","line_start":162},{"id":"blocker:references/gas-station-troubleshooting.md:163:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"Render gate — scoped to Gas Station rent-settlement txs only. Do NOT render on the keyword alone. Fi","category":"blocker","line_end":163,"severity":"low","line_start":163},{"id":"blocker:references/gas-station-troubleshooting.md:183:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"| Invalid `gasTokenAddress` | backend error | Do NOT fabricate. Re-run phase 1; use values from the ","category":"blocker","line_end":183,"severity":"low","line_start":183},{"id":"blocker:references/gas-station-troubleshooting.md:191:system-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"System reconnaissance","snippet":"**Management command failures** (`update-default-token` / `enable` / `disable`): show the error mess","category":"blocker","line_end":191,"severity":"low","line_start":191},{"id":"blocker:references/gas-station-troubleshooting.md:55:network-reconnaissance","file":"references/gas-station-troubleshooting.md","pattern":"Network reconnaissance","snippet":"- Status: success","category":"blocker","line_end":56,"severity":"low","line_start":55},{"id":"network:references/gas-station.md:54:hardcoded-url","file":"references/gas-station.md","pattern":"Hardcoded URL","snippet":"About Gas Station: Gas Station aggregates third-party services, automatically compares rates and pic","category":"network","line_end":54,"severity":"low","line_start":54},{"id":"blocker:references/gas-station.md:27:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"Always surface Gas Station when native SOL is insufficient but a supported stablecoin has enough bal","category":"blocker","line_end":27,"severity":"low","line_start":27},{"id":"blocker:references/gas-station.md:35:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"| `gs_first_time` | Scene A | Get consent + token pick → follow `next` (re-run with `--enable-gas-st","category":"blocker","line_end":35,"severity":"low","line_start":35},{"id":"blocker:references/gas-station.md:105:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"| **1** — alt token + make it default | Re-run original command with `--gas-token-address <alt_addr>","category":"blocker","line_end":105,"severity":"low","line_start":105},{"id":"blocker:references/gas-station.md:106:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"| **2** — alt token this tx only | Re-run with `--gas-token-address <alt_addr> --relayer-id <alt_rel","category":"blocker","line_end":106,"severity":"low","line_start":106},{"id":"blocker:references/gas-station.md:136:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"Whenever any transaction is paid via Gas Station (`wallet send`, `contract-call`, `swap`, `bridge`, ","category":"blocker","line_end":136,"severity":"low","line_start":136},{"id":"blocker:references/gas-station.md:138:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"1. **Acknowledgment** — state plainly this tx's gas was paid via Gas Station with a stablecoin, not ","category":"blocker","line_end":138,"severity":"low","line_start":138},{"id":"blocker:references/gas-station.md:139:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"2. **Service charge** — show raw amount + symbol (`{serviceCharge} {serviceChargeSymbol}`) and USD e","category":"blocker","line_end":139,"severity":"low","line_start":139},{"id":"blocker:references/gas-station.md:151:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"- Network fee: 0.8 USDC (≈ $0.80, paid via Gas Station)","category":"blocker","line_end":151,"severity":"low","line_start":151},{"id":"blocker:references/gas-station.md:158:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"Checking later: when the user says any equivalent of \"check order {orderId}\" (any language), run `wa","category":"blocker","line_end":158,"severity":"low","line_start":158},{"id":"blocker:references/gas-station.md:171:system-reconnaissance","file":"references/gas-station.md","pattern":"System reconnaissance","snippet":"onchainos wallet gas-station setup   --chain solana --gas-token-address <spl_mint> --relayer-id <id>","category":"blocker","line_end":171,"severity":"low","line_start":171},{"id":"blocker:references/gateway-cli-reference.md:55:system-reconnaissance","file":"references/gateway-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos gateway orders --address <address> --chain <chain> [--order-id <id>]","category":"blocker","line_end":55,"severity":"low","line_start":55},{"id":"blocker:references/portfolio.md:42:system-reconnaissance","file":"references/portfolio.md","pattern":"System reconnaissance","snippet":"- **Zero balance**: valid — display `$0.00`, not an error.","category":"blocker","line_end":42,"severity":"low","line_start":42},{"id":"network:references/security-cli-reference.md:55:hardcoded-url","file":"references/security-cli-reference.md","pattern":"Hardcoded URL","snippet":"onchainos security dapp-scan --domain \"https://some-dapp.xyz\"","category":"network","line_end":55,"severity":"low","line_start":55},{"id":"filesystem:references/security.md:68:hidden-file-in-home-directory","file":"references/security.md","pattern":"Hidden file in home directory","snippet":"After `security token-scan`, offer a related workflow hint: \"You can also try out our **[workflow na","category":"filesystem","line_end":68,"severity":"high","line_start":68},{"id":"filesystem:references/security.md:68:hidden-file-access","file":"references/security.md","pattern":"Hidden file access","snippet":"After `security token-scan`, offer a related workflow hint: \"You can also try out our **[workflow na","category":"filesystem","line_end":68,"severity":"medium","line_start":68},{"id":"blocker:references/security.md:24:system-reconnaissance","file":"references/security.md","pattern":"System reconnaissance","snippet":"The risk result is valid even if simulation fails (`simulator.revertReason` may hold the reason). A ","category":"blocker","line_end":24,"severity":"low","line_start":24},{"id":"blocker:references/security.md:35:system-reconnaissance","file":"references/security.md","pattern":"System reconnaissance","snippet":"Buy is stricter than sell, but that mapping is the CLI's — do not re-derive it. Omit `--trade-direct","category":"blocker","line_end":35,"severity":"low","line_start":35},{"id":"blocker:references/strategy-cli-reference.md:8:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos strategy create-limit --chain-id <id|alias> --from-token <address> --to-token <address> \\","category":"blocker","line_end":8,"severity":"low","line_start":8},{"id":"blocker:references/strategy-cli-reference.md:37:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos strategy cancel --order-id <id> [--wait]","category":"blocker","line_end":37,"severity":"low","line_start":37},{"id":"blocker:references/strategy-cli-reference.md:41:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"`--wait` (bool, `[UNIT: bool]`) waits for terminal state (fixed 3 s + per-order re-query/merge). **`","category":"blocker","line_end":41,"severity":"low","line_start":41},{"id":"blocker:references/strategy-cli-reference.md:46:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos strategy list [--order-id <id>] [--status active,suspended,...] [--chain-id 1,501] \\","category":"blocker","line_end":46,"severity":"low","line_start":46},{"id":"blocker:references/strategy-cli-reference.md:49:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"Modes: `--order-id <id>` → single-order detail (`openOrderDetail`); omit → page query (`getOpenOrder","category":"blocker","line_end":49,"severity":"low","line_start":49},{"id":"blocker:references/strategy-cli-reference.md:90:system-reconnaissance","file":"references/strategy-cli-reference.md","pattern":"System reconnaissance","snippet":"Non-terminal set `{-3,0,2,3,4}` (the default when `--status` is omitted); terminal set `{-7,-2,-1,1}","category":"blocker","line_end":90,"severity":"low","line_start":90},{"id":"blocker:references/strategy-troubleshooting.md:13:system-reconnaissance","file":"references/strategy-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 60002 | NO_ORDER_FOUND | Target id wrong or already terminal — suggest `list`. |","category":"blocker","line_end":13,"severity":"low","line_start":13},{"id":"blocker:references/strategy.md:46:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"Slippage: user didn't mention → display `Default 15%` and OMIT `--slippage` (CLI default 15). User s","category":"blocker","line_end":46,"severity":"low","line_start":46},{"id":"blocker:references/strategy.md:71:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"`--trigger-price` is a USD price — make this clear to avoid confusion with an exchange rate.","category":"blocker","line_end":71,"severity":"low","line_start":71},{"id":"blocker:references/strategy.md:84:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"Match the user's conversation language — translate the canonical English label at output time. Never","category":"blocker","line_end":84,"severity":"low","line_start":84},{"id":"blocker:references/strategy.md:91:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"| Order id | Order Status | Order Type | Estimated Amount | To Token addr | Value | Trigger price | ","category":"blocker","line_end":91,"severity":"low","line_start":91},{"id":"blocker:references/strategy.md:94:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"Mapping: Order id = `orderId`; Order Status = `statusLabel` (translate); Order Type = strategyType l","category":"blocker","line_end":94,"severity":"low","line_start":94},{"id":"blocker:references/strategy.md:113:system-reconnaissance","file":"references/strategy.md","pattern":"System reconnaissance","snippet":"`create-limit`, `cancel`, `resume` return after the request is **accepted**, not after terminal stat","category":"blocker","line_end":113,"severity":"low","line_start":113},{"id":"network:references/swap.md:41:python-http-libraries","file":"references/swap.md","pattern":"Python HTTP libraries","snippet":"- Slippage: omit for autoSlippage. Pass `--slippage <pct>` only if the user explicitly requests. Nev","category":"network","line_end":41,"severity":"low","line_start":41},{"id":"blocker:references/wallet-cli-reference.md:12:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos wallet login [--phase init|open|poll] [--url <url>] [--session-id <id>]","category":"blocker","line_end":12,"severity":"low","line_start":12},{"id":"blocker:references/wallet-cli-reference.md:21:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"| `--session-id` | No | Auth session id to poll (`--phase poll`). Defaults to the most recent `init`","category":"blocker","line_end":21,"severity":"low","line_start":21},{"id":"blocker:references/wallet-cli-reference.md:175:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"[--gas-token-address <address>] [--relayer-id <id>] [--enable-gas-station]","category":"blocker","line_end":175,"severity":"low","line_start":175},{"id":"blocker:references/wallet-cli-reference.md:246:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos wallet history [--account-id <id>] [--chain <chain>] [--begin <ms>] [--end <ms>] [--cursor","category":"blocker","line_end":246,"severity":"low","line_start":246},{"id":"blocker:references/wallet-cli-reference.md:248:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos wallet history --chain <chain> --order-id <id>","category":"blocker","line_end":248,"severity":"low","line_start":248},{"id":"blocker:references/wallet-cli-reference.md:274:system-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"System reconnaissance","snippet":"[--gas-token-address <addr>] [--relayer-id <id>] [--enable-gas-station] [--force]","category":"blocker","line_end":274,"severity":"low","line_start":274},{"id":"blocker:references/wallet-cli-reference.md:255:network-reconnaissance","file":"references/wallet-cli-reference.md","pattern":"Network reconnaissance","snippet":"List mode: omit `--cursor` for the first page. To continue, pass the exact `cursor` returned by the ","category":"blocker","line_end":255,"severity":"low","line_start":255},{"id":"sensitive:references/wallet-portal-actions.md:5:crypto-seed-private-key-mention","file":"references/wallet-portal-actions.md","pattern":"Crypto seed/private key mention","snippet":"> Load when: new user login (`isNew: true`), after `wallet add`, the user asks about Policy / spendi","category":"sensitive","line_end":5,"severity":"high","line_start":5},{"id":"sensitive:references/wallet-portal-actions.md:7:crypto-seed-private-key-mention","file":"references/wallet-portal-actions.md","pattern":"Crypto seed/private key mention","snippet":"Policy configuration must be completed by the user on the Web portal. The Agent only detects the sce","category":"sensitive","line_end":7,"severity":"high","line_start":7},{"id":"sensitive:references/wallet-portal-actions.md:64:crypto-seed-private-key-mention","file":"references/wallet-portal-actions.md","pattern":"Crypto seed/private key mention","snippet":"e.g., \"How do I export my mnemonic?\", \"I want to migrate my wallet\", \"How do I import my wallet into","category":"sensitive","line_end":64,"severity":"high","line_start":64},{"id":"sensitive:references/wallet-portal-actions.md:68:crypto-seed-private-key-mention","file":"references/wallet-portal-actions.md","pattern":"Crypto seed/private key mention","snippet":"> Export your seed phrase in the OKX Wallet extension or app.","category":"sensitive","line_end":68,"severity":"high","line_start":68},{"id":"sensitive:references/wallet-portal-actions.md:70:crypto-seed-private-key-mention","file":"references/wallet-portal-actions.md","pattern":"Crypto seed/private key mention","snippet":"> Before exporting, move your assets to a secure address and stop any active tasks. After exporting,","category":"sensitive","line_end":70,"severity":"high","line_start":70},{"id":"blocker:references/wallet-troubleshooting.md:19:system-reconnaissance","file":"references/wallet-troubleshooting.md","pattern":"System reconnaissance","snippet":"- **Invalid transaction payload**: never repair a payload generated by another CLI command; return t","category":"blocker","line_end":19,"severity":"low","line_start":19},{"id":"filesystem:references/wallet.md:55:path-traversal-sequence","file":"references/wallet.md","pattern":"Path traversal sequence","snippet":"list, switch to the [`okx-ai` skill](../../okx-ai/SKILL.md) and follow","category":"filesystem","line_end":55,"severity":"high","line_start":55},{"id":"filesystem:references/wallet.md:56:path-traversal-sequence","file":"references/wallet.md","pattern":"Path traversal sequence","snippet":"[subscription.md](../../okx-ai/references/a2a/user/subscription.md).","category":"filesystem","line_end":56,"severity":"high","line_start":56},{"id":"sensitive:references/wallet.md:143:crypto-seed-private-key-mention","file":"references/wallet.md","pattern":"Crypto seed/private key mention","snippet":"- User asks about wallet export (export mnemonic, migrate, import to hardware wallet)","category":"sensitive","line_end":143,"severity":"high","line_start":143},{"id":"sensitive:references/wallet.md:145:crypto-seed-private-key-mention","file":"references/wallet.md","pattern":"Crypto seed/private key mention","snippet":"Never display mnemonic phrases, seed phrases, or private keys in the conversation.","category":"sensitive","line_end":145,"severity":"high","line_start":145},{"id":"sensitive:references/wallet.md:163:crypto-seed-private-key-mention","file":"references/wallet.md","pattern":"Crypto seed/private key mention","snippet":"The private key is generated and stored inside a server-side secure enclave and never leaves the TEE","category":"sensitive","line_end":163,"severity":"high","line_start":163},{"id":"blocker:references/wallet.md:40:system-reconnaissance","file":"references/wallet.md","pattern":"System reconnaissance","snippet":"`wallet login --phase poll --session-id <authSessionId>` using the id from","category":"blocker","line_end":40,"severity":"low","line_start":40},{"id":"blocker:references/wallet.md:44:system-reconnaissance","file":"references/wallet.md","pattern":"System reconnaissance","snippet":"choose either a new poll with the same id or a new `--phase init` session.","category":"blocker","line_end":44,"severity":"low","line_start":44},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"subscription requests to `okx-ai`; route third-party DApp-specific operations to","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Pay gas with a stablecoin on Solana; enable / disable / change default gas token / status; a `send","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| A given public address's balance / holdings / total value (`0xAbc...` / a Solana address) | [portf","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. If a complete atomic intent matches a Hot command, run it directly; do not pre-read `--help` or t","category":"external_commands","line_end":51,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. Run that command's `--help` only when the Reference lacks a needed detail or the installed CLI di","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`--chain` accepts numeric chain IDs and human-readable names. Resolution rules and the supported-cha","category":"external_commands","line_end":58,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Token amounts in **UI units** (`1.5 ETH`), never base units.","category":"external_commands","line_end":64,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- USD values with **2 decimal places**; if `< 0.01`, show full precision.","category":"external_commands","line_end":65,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Large amounts in shorthand (`$1.2M`, `$340K`); sort holdings by USD value descending.","category":"external_commands","line_end":66,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- In balance/holdings displays, show the **abbreviated** contract address alongside the symbol (`0x1","category":"external_commands","line_end":67,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Flag suspicious prices**: if a token looks like a wrapped/bridged variant (`wETH`, `stETH`, `wBT","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Some state-changing commands return **confirming** (exit code **2**) when the backend needs user con","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Display** `message` and ask for confirmation.","category":"external_commands","line_end":82,"severity":"medium","line_start":82},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Confirms** → immediately follow `next` (usually: re-run the same command with `--force` appende","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Never pass `--force` on the FIRST invocation of a state-changing command. Add `--force` only after a","category":"external_commands","line_end":86,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Credential protection**: never log, display, or ask for session tokens, `clientId`, API keys, pr","category":"external_commands","line_end":90,"severity":"medium","line_start":90},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Credential recovery**: on a `Credentials corrupted` / \"please login again\" error the local crede","category":"external_commands","line_end":91,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Address integrity (funds-loss risk)**: any on-chain identifier shown to the user (wallet address","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Recipient validation**: EVM `0x`-prefixed, 42 chars; Solana Base58, 32–44 chars. Validate before","category":"external_commands","line_end":98,"severity":"medium","line_start":98},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Transaction simulation**: the CLI runs pre-execution simulation; if `executeResult` is false → s","category":"external_commands","line_end":99,"severity":"medium","line_start":99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Risk action priority**: `block` > `warn` > empty. Top-level `action` = highest priority from `ri","category":"external_commands","line_end":100,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **CLI-classified risk verdicts**: the CLI returns the risk verdict as fields — **MUST**: read them","category":"external_commands","line_end":101,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Backend-sponsored gas-free transactions**: when the backend's pre-execution (`unsignedInfo`) res","category":"external_commands","line_end":104,"severity":"medium","line_start":104},{"id":"network:SKILL.md:15:python-http-libraries","file":"SKILL.md","pattern":"Python HTTP libraries","snippet":"Use this Skill for wallet and on-chain execution requests. Route marketplace and","category":"network","line_end":15,"severity":"low","line_start":15},{"id":"network:SKILL.md:8:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: \"https://web3.okx.com\"","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"sensitive:SKILL.md:32:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"| Policy / spending limit / whitelist; export wallet / mnemonic; MEV protection for a contract-call;","category":"sensitive","line_end":32,"severity":"high","line_start":32},{"id":"sensitive:SKILL.md:90:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"- **Credential protection**: never log, display, or ask for session tokens, `clientId`, API keys, pr","category":"sensitive","line_end":90,"severity":"high","line_start":90}],"finding_verdicts":[{"id":"sensitive:references/account-faq.md:25:crypto-seed-private-key-mention","reason":"This explains server-side TEE signing and states that private keys never leave the enclave. It neither supplies nor requests a secret.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/audit-log.md:9:hidden-file-in-home-directory","reason":"This documents the application audit-log location. The flow explicitly prohibits reading or displaying its contents in conversation.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/audit-log.md:9:hidden-file-access","reason":"The hidden path is provided for user-directed offline troubleshooting, not accessed by the agent. No unrelated home-directory data is requested.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/brc20-cli-reference.md:89:system-reconnaissance","reason":"This queries Bitcoin transfer history using a transaction hash or order identifier. It does not inspect the host system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/brc20-cli-reference.md:157:system-reconnaissance","reason":"This retrieves inscription status by transaction or order identifier. These are wallet records, not operating-system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-cli-reference.md:77:system-reconnaissance","reason":"The text describes an external-wallet bridge workflow and matching bridge identifiers. No host information is collected.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-cli-reference.md:92:system-reconnaissance","reason":"The identifier belongs to a bridge-status command, not a system identity query. Returned-command validation is addressed separately as a semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-cli-reference.md:116:system-reconnaissance","reason":"This example checks a cross-chain transaction using bridge and source-chain identifiers. It performs no host discovery.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-troubleshooting.md:51:system-reconnaissance","reason":"This explains recovery from an unsupported bridge identifier by obtaining another quote. No system command or host inspection appears.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-troubleshooting.md:53:system-reconnaissance","reason":"This addresses invalid EVM wallet-address formatting. Address validation is unrelated to system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-troubleshooting.md:54:system-reconnaissance","reason":"This requests a destination address with the correct blockchain-family format. It does not collect host information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-troubleshooting.md:84:system-reconnaissance","reason":"This diagnoses pending approval transactions using wallet history. The order identifier does not invoke an operating-system identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge-troubleshooting.md:93:system-reconnaissance","reason":"This limits bridge-status checks to one per user request. It documents transaction monitoring, not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:references/bridge.md:38:ruby-shell-backtick-execution","reason":"Backticks format field names in a Markdown table example. They are not executable Ruby or shell substitutions.","verdict":"false_positive","confidence":1},{"id":"blocker:references/bridge.md:31:system-reconnaissance","reason":"These are bridge-quote options for routes and approvals. Bridge identifiers are application arguments, not host identity queries.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge.md:52:system-reconnaissance","reason":"This documents bridge-execution parameters after user route selection. It contains no system-reconnaissance command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge.md:78:system-reconnaissance","reason":"The text introduces a bridge-status command requiring bridge and chain identifiers. Command-string trust is a separate semantic concern, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge.md:86:system-reconnaissance","reason":"This checks bridge arrival by source transaction hash. It does not inspect users, processes, or host configuration.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge.md:87:system-reconnaissance","reason":"This checks bridge arrival by swap order identifier. No operating-system discovery is performed.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/bridge.md:109:system-reconnaissance","reason":"Allow and deny lists restrict bridge providers only when requested by the user. They do not enumerate host resources.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/funding.md:71:system-reconnaissance","reason":"This is ordinary prose prohibiting invented token metadata. No command or system-information request exists in the passage.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:14:system-reconnaissance","reason":"This is a user-facing explanation of a transaction-value cap and payment alternatives. It contains no host inspection.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:35:system-reconnaissance","reason":"The sentence explains delayed transaction-hash availability. It is response copy, not a reconnaissance instruction.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:48:system-reconnaissance","reason":"This routes a user request to a wallet-history lookup by order identifier. It retrieves transaction status rather than host details.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station-troubleshooting.md:60:system-reconnaissance","reason":"This formats stablecoin service-charge amounts for display. No operating-system information is requested.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:61:system-reconnaissance","reason":"This formats a USD fee when only its dollar value is returned. It is display guidance, not system reconnaissance.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:62:system-reconnaissance","reason":"This supplies fallback fee wording when an amount is unavailable. It contains no executable or discovery instruction.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:71:system-reconnaissance","reason":"This is a failure-message template containing an order identifier. No host identity command is present.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:73:system-reconnaissance","reason":"This explains a relayer finalization timeout. It is transaction-status prose rather than host reconnaissance.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:88:system-reconnaissance","reason":"This recognizes an unsupported transaction type from a wallet error. It does not probe operating-system capabilities.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station-troubleshooting.md:90:system-reconnaissance","reason":"This tells users that an ineligible transaction requires native SOL fees. The text contains no reconnaissance behavior.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:92:system-reconnaissance","reason":"This explains documented Gas Station transaction limitations. It is product copy, not host discovery.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:162:system-reconnaissance","reason":"This FAQ heading asks about a small SOL receipt. It is not a system-information request.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station-troubleshooting.md:163:system-reconnaissance","reason":"This verifies transaction-history markers before explaining rent settlement. Wallet order identifiers are not operating-system identity commands.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station-troubleshooting.md:183:system-reconnaissance","reason":"This refreshes invalid gas-token selection from a confirming response. No host enumeration occurs.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station-troubleshooting.md:191:system-reconnaissance","reason":"This requires reporting management-command failures without automatic retries. It is error handling, not reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station-troubleshooting.md:55:network-reconnaissance","reason":"Status: success is a literal line inside a response template. It does not initiate network probing.","verdict":"false_positive","confidence":1},{"id":"network:references/gas-station.md:54:hardcoded-url","reason":"The URL links to an OKX educational article about Gas Station. It does not upload wallet information or credentials.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:27:system-reconnaissance","reason":"This describes fee-token alternatives when a transaction lacks native gas. It does not inspect the host system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:35:system-reconnaissance","reason":"This maps a confirming response to user consent and selected fee-token parameters. Relayer identifiers are application data, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:105:system-reconnaissance","reason":"This applies a user-selected gas token and default preference. Relayer identifiers do not query operating-system identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:106:system-reconnaissance","reason":"This applies a user-selected alternative gas token for one transaction. No host discovery command appears.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:136:system-reconnaissance","reason":"This defines when to display stablecoin fee details after a transaction. It contains no host-information collection.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:138:system-reconnaissance","reason":"This requires acknowledging the stablecoin used for gas. It is user-facing disclosure, not reconnaissance.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station.md:139:system-reconnaissance","reason":"This requires displaying the service charge and USD equivalent. No system inspection is involved.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station.md:151:system-reconnaissance","reason":"This is a sample network-fee display line. It neither runs commands nor inspects the host.","verdict":"false_positive","confidence":1},{"id":"blocker:references/gas-station.md:158:system-reconnaissance","reason":"This checks a Solana transaction by wallet order identifier. It is an application status lookup, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gas-station.md:171:system-reconnaissance","reason":"This documents Gas Station setup using a relayer identifier. The identifier is a service argument, not a host identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/gateway-cli-reference.md:55:system-reconnaissance","reason":"This retrieves broadcast orders for an address and chain. It does not collect operating-system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/portfolio.md:42:system-reconnaissance","reason":"This explains that a zero portfolio balance is valid. The prose contains no system-reconnaissance operation.","verdict":"false_positive","confidence":1},{"id":"network:references/security-cli-reference.md:55:hardcoded-url","reason":"The example URL is an argument to a phishing-domain scanner. The documented operation checks the domain rather than sending secrets to it.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/security.md:68:hidden-file-in-home-directory","reason":"This offers optional application workflow references under the Onchain OS directory. It does not direct secret access or automatic execution of those files.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/security.md:68:hidden-file-access","reason":"The path names an optional workflow offered to the user after a scan. There is no instruction to read unrelated hidden files.","verdict":"false_positive","confidence":0.98},{"id":"blocker:references/security.md:24:system-reconnaissance","reason":"This explains interpretation of scan warnings and simulation errors. It does not request host data.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/security.md:35:system-reconnaissance","reason":"This is token-risk classification guidance, not a system-discovery command. Its failed-scan continuation rule is recorded separately as a semantic risk.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:8:system-reconnaissance","reason":"This documents limit-order creation with a blockchain identifier. The operation is governed by the strategy confirmation flow, not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:37:system-reconnaissance","reason":"This cancels a specified wallet strategy order. The order identifier is not an operating-system identity request.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:41:system-reconnaissance","reason":"This describes bounded waiting and validation of cancellation selectors. It does not enumerate host resources.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:46:system-reconnaissance","reason":"This lists strategy orders using application and chain filters. No system-information command is invoked.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:49:system-reconnaissance","reason":"This distinguishes single-order detail from paginated order queries. All identifiers concern wallet strategy records.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-cli-reference.md:90:system-reconnaissance","reason":"This lists terminal and nonterminal strategy status values. It contains no reconnaissance behavior.","verdict":"false_positive","confidence":1},{"id":"blocker:references/strategy-troubleshooting.md:13:system-reconnaissance","reason":"This explains an unknown or completed order and suggests listing orders. The identifier is application data, not a host command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy.md:46:system-reconnaissance","reason":"This documents slippage defaults and explicit user overrides before order confirmation. It does not inspect the operating system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy.md:71:system-reconnaissance","reason":"This clarifies that a trigger price is denominated in USD. It is parameter guidance, not system reconnaissance.","verdict":"false_positive","confidence":1},{"id":"blocker:references/strategy.md:84:system-reconnaissance","reason":"This specifies localization and display labels for strategy states. It does not collect host details.","verdict":"false_positive","confidence":1},{"id":"blocker:references/strategy.md:91:system-reconnaissance","reason":"Order id is a table heading in a strategy-results template. It is not an executable identity query.","verdict":"false_positive","confidence":1},{"id":"blocker:references/strategy.md:94:system-reconnaissance","reason":"This maps strategy response fields into table columns. Order identifiers remain display data rather than host commands.","verdict":"false_positive","confidence":1},{"id":"blocker:references/strategy.md:113:system-reconnaissance","reason":"This distinguishes request acceptance from final order status and prescribes bounded rechecks. No host reconnaissance occurs.","verdict":"false_positive","confidence":0.99},{"id":"network:references/swap.md:41:python-http-libraries","reason":"The word requests describes user-selected slippage. There is no Python import or HTTP-library call.","verdict":"false_positive","confidence":1},{"id":"blocker:references/wallet-cli-reference.md:12:system-reconnaissance","reason":"This documents wallet login phases and an authentication-session identifier. It does not query operating-system identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:21:system-reconnaissance","reason":"This defines the authentication-session argument used for polling login. It is not a host-discovery instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:175:system-reconnaissance","reason":"These are optional stablecoin gas-payment arguments on wallet sends. Relayer identifiers are service parameters, not system commands.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:246:system-reconnaissance","reason":"This retrieves wallet transaction history with account and pagination filters. It does not inspect host users or processes.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:248:system-reconnaissance","reason":"This retrieves one transaction by blockchain and order identifier. No system identity query is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:274:system-reconnaissance","reason":"These are contract-call options for Gas Station and confirmed retries. They do not enumerate operating-system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-cli-reference.md:255:network-reconnaissance","reason":"This documents wallet-history pagination using the returned cursor. It does not scan networks, ports, or hosts.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet-portal-actions.md:5:crypto-seed-private-key-mention","reason":"This routes user questions about export to a guidance module. The module forbids displaying keys and leaves export to the user.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet-portal-actions.md:7:crypto-seed-private-key-mention","reason":"This explicitly prohibits displaying mnemonic or private-key content. It is a credential-protection rule, not secret extraction.","verdict":"false_positive","confidence":1},{"id":"sensitive:references/wallet-portal-actions.md:64:crypto-seed-private-key-mention","reason":"These are example user questions triggering export instructions. The agent does not read or export the mnemonic.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet-portal-actions.md:68:crypto-seed-private-key-mention","reason":"This directs the user to export through the OKX application or extension. It does not request that the seed enter the conversation.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet-portal-actions.md:70:crypto-seed-private-key-mention","reason":"This advises secure backup and explicitly prohibits sharing the seed. No destination for secret disclosure is supplied.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet-troubleshooting.md:19:system-reconnaissance","reason":"This prohibits repairing externally generated transaction payloads and directs regeneration through the owning flow. It is not host reconnaissance.","verdict":"false_positive","confidence":1},{"id":"filesystem:references/wallet.md:55:path-traversal-sequence","reason":"The parent-directory segments form a fixed Markdown link to a sibling skill for user-requested subscriptions. No attacker-controlled traversal or arbitrary file operation appears.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/wallet.md:56:path-traversal-sequence","reason":"This is a fixed relative documentation link for the same subscription handoff. It does not implement arbitrary filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet.md:143:crypto-seed-private-key-mention","reason":"This recognizes a user request for export guidance. The surrounding flow leaves export to the user and prohibits secret display.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/wallet.md:145:crypto-seed-private-key-mention","reason":"This explicitly forbids displaying mnemonic phrases, seeds, and private keys. It is a safeguard rather than credential access.","verdict":"false_positive","confidence":1},{"id":"sensitive:references/wallet.md:163:crypto-seed-private-key-mention","reason":"This describes enclave-held keys and states that the agent cannot export or locally sign with them. No secret value is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet.md:40:system-reconnaissance","reason":"This polls the authentication session created by the preceding login step. The session identifier is not a system identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/wallet.md:44:system-reconnaissance","reason":"This offers another login poll or a new session after timeout. It is authentication recovery, not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Backticks mark a sibling skill name in routing prose. They do not execute Ruby or shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"Backticks format wallet command names in an intent-routing table. No shell substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The inline code span contains an abbreviated example public address. It is Markdown formatting, not executable code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"Backticks format a help flag in CLI-reference guidance. The text is not a Ruby or shell backtick execution construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The help flag is an inline Markdown code span. It is not executable shell substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"Backticks format a chain option and a documented chain-list command. They do not perform shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The code span contains an example token amount. There is no executable backtick expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"The code span contains a display threshold for USD formatting. It is Markdown, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"Backticks format abbreviated dollar-value examples. They are not commands or shell substitutions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"Backticks format token-address examples and response-field names. The passage specifies display behavior, not code execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"Inline code spans mark token symbols, a warning label, and a price-check command. They are Markdown rather than executable shell backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"Backticks mark response-field names in a confirmation protocol. No Ruby or shell execution syntax is active.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"The inline code span names the confirmation message field. It does not execute that field as a shell substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The backticks are Markdown around field names, flags, and command names. Trusting the returned next action is addressed separately as a semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"Backticks format a force flag and confirmation fields in a restrictive safety rule. They are not shell command substitutions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"Backticks format secret-field names in an explicit nondisclosure rule. They neither execute commands nor expose secret values.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"Inline code spans mark an error message and login recovery command. They are Markdown, not executable backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"Backticks format identifier names and an address lookup command in an integrity safeguard. No shell substitution appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","reason":"The inline code span contains the EVM address prefix. It is a validation example, not code execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","reason":"Backticks name simulation-result fields in an explicit no-broadcast condition. They are Markdown formatting only.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"Backticks mark risk labels and response fields in safety guidance. They are not executable Ruby or shell expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"Backticks format CLI commands and risk enums in classification guidance. This is not a shell backtick execution construct.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The code span names a pre-execution response object. The prose describes backend gas sponsorship, not shell execution.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:15:python-http-libraries","reason":"The word requests appears in ordinary wallet-routing prose. There is no Python HTTP import or request call.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:8:hardcoded-url","reason":"This is the declared OKX Web3 homepage in frontmatter. It is metadata rather than an upload or exfiltration endpoint.","verdict":"false_positive","confidence":1},{"id":"sensitive:SKILL.md:32:crypto-seed-private-key-mention","reason":"This routes wallet-export questions to user-operated application guidance. The referenced flow explicitly forbids exposing seed phrases.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:SKILL.md:90:crypto-seed-private-key-mention","reason":"This explicitly forbids asking for, displaying, or logging keys and seed phrases. It is credential protection, not secret collection.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Swap Security Scans Fail Open","severity":"high","locations":[{"file":"references/security.md","line_end":35,"line_start":35}],"confidence":0.99,"description":"Swap token-scan failures automatically continue with a warning, and unsupported scan chains do not block. Trading can proceed without completed token-risk verification.","confidence_reasoning":"The swap exception explicitly removes the general retry-or-consent pause after scan failure. This creates a verification gap, not evidence of malicious intent."},{"title":"Conflicting Rules Permit Blocked Swap Overrides","severity":"high","locations":[{"file":"references/swap.md","line_end":58,"line_start":58},{"file":"references/swap.md","line_end":120,"line_start":106},{"file":"SKILL.md","line_end":101,"line_start":99}],"confidence":0.98,"description":"The swap flow says blocked routes must not broadcast, but later rules say BLOCK requires an explicit override, including blacklisted addresses. This weakens mandatory stops.","confidence_reasoning":"Directly conflicting instructions distinguish neither overridable warnings nor immutable blocks. An agent can interpret later override guidance as authorization to trade blocked assets."},{"title":"Returned Command Strings Cross the Execution Boundary","severity":"high","locations":[{"file":"SKILL.md","line_end":86,"line_start":80},{"file":"references/bridge.md","line_end":89,"line_start":82},{"file":"references/bridge-cli-reference.md","line_end":92,"line_start":92}],"confidence":0.86,"description":"The skill follows returned next commands and uses returned bridge-status commands verbatim. It specifies no command allowlist or argument validation before execution.","confidence_reasoning":"The execution instructions directly trust returned command strings despite declaring CLI output untrusted. Exploitation depends on influencing those fields; no injected payload was found."},{"title":"Mandatory Preflight Runs an Unpinned Installer","severity":"medium","locations":[{"file":"SKILL.md","line_end":47,"line_start":45}],"confidence":0.97,"description":"The required preflight delegates to an automatically approved npx installer without a package version. Registry-delivered code runs before wallet operations without separate installation consent.","confidence_reasoning":"The cited line mandates the linked preflight, which runs npx -y @okxweb3/onchainos-installer. Its skill-version argument does not pin the installer package."}],"subject_marketplace_commit_sha":"68ad52c83048aa55fba46a90f4f6c6d9922a47b0","subject_content_hash":"d94867982252ae4954c3cadbb836faffa56517bb8baa654eceb19b93a86faeb1","subject_tree_hash":"b5ea83c382a060f77e77cb39b0dd2c8aad25bf929156fc017bcb3662881430fe","subject_plugin_path":"skills/okx/okx-agentic-wallet","audit_payload_hash":"1e960ab92cf0df916ca8bacfd8e4a654","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"68ad52c83048aa55fba46a90f4f6c6d9922a47b0","contentHash":"d94867982252ae4954c3cadbb836faffa56517bb8baa654eceb19b93a86faeb1","treeHash":"b5ea83c382a060f77e77cb39b0dd2c8aad25bf929156fc017bcb3662881430fe","pluginPath":"skills/okx/okx-agentic-wallet","auditPayloadHash":"1e960ab92cf0df916ca8bacfd8e4a654"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/okx-okx-agentic-wallet/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":4,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}