{"data":{"skill":{"slug":"internet-court-okx-guide","name":"okx-guide","icon":"📦","repo":"https://github.com/internet-court/internet-court-skill/tree/main/vendored/okx/okx-guide","status":"approved","author":"internet-court","authorVersion":"4.2.1","skillstoreRevision":1},"audit":{"id":"38b15d28-d551-4430-a365-56cedce2d340","skill_id":"f715c206-e11a-4889-8699-2466ad5aa43d","version":2,"content_hash":"v3:3f6e026a3363e0954ede7bef0cfe88d4475de137:787338f26e6732e31c153f302988c77aa5864c78d2a014de63db05531798ceba:9a448339ed13355a5c4c725cc2a05149e326a1e91da555387d5e9b1ed9d56686:736b696c6c732f696e7465726e65742d636f7572742f6f6b782d6775696465:956b6254ceacbd989fe61e273d0be0fb","risk_level":"critical","is_blocked":true,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"blocked","manual_install_policy":"allowed_with_warning","summary":"Most URL, secret-name, and backtick detections are documentation-only false positives. However, the skill obeys arbitrary preflight output and follows files outside its audited directory. It also loads hidden home workflows and can trigger plugin installation, creating critical supply-chain risk.","remediation":[{"issue":"Preflight output can direct arbitrary agent actions and bootstrap an installer.","severity":"critical","suggestion":"Allowlist preflight actions, display each action, and require explicit approval before updates, force upgrades, downloads, or installer execution."},{"issue":"The skill follows sibling registration and wallet files outside its audited directory.","severity":"high","suggestion":"Bundle reviewed dependencies or pin their hashes. Reject missing, changed, or out-of-bound paths before loading instructions."},{"issue":"Hidden home-directory workflows are loaded and followed without validation.","severity":"high","suggestion":"Use an allowlist of canonical workflow names, verify content integrity, and request confirmation before following each external workflow."},{"issue":"A menu route can cause another skill to install a plugin.","severity":"high","suggestion":"Require explicit installation consent and show the plugin source, version, permissions, and integrity status before continuing."}],"risk_factor_evidence":[{"factor":"filesystem","evidence":[{"file":"references/ai-guide.md","line_end":47,"line_start":47},{"file":"references/how-to-play.md","line_end":113,"line_start":113},{"file":"references/how-to-play.md","line_end":114,"line_start":114},{"file":"references/how-to-play.md","line_end":113,"line_start":113},{"file":"references/how-to-play.md","line_end":114,"line_start":114},{"file":"references/registered-home.md","line_end":12,"line_start":12},{"file":"references/registered-home.md","line_end":49,"line_start":49},{"file":"references/unregistered-role-selection.md","line_end":19,"line_start":19},{"file":"references/unregistered-role-selection.md","line_end":20,"line_start":20},{"file":"references/unregistered-role-selection.md","line_end":21,"line_start":21},{"file":"references/welcome.md","line_end":165,"line_start":165},{"file":"references/welcome.md","line_end":166,"line_start":166},{"file":"references/welcome.md","line_end":189,"line_start":189},{"file":"references/welcome.md","line_end":165,"line_start":165},{"file":"references/welcome.md","line_end":166,"line_start":166},{"file":"references/welcome.md","line_end":189,"line_start":189},{"file":"SKILL.md","line_end":26,"line_start":26}]},{"factor":"network","evidence":[{"file":"references/ai-support.md","line_end":16,"line_start":16},{"file":"references/ai-support.md","line_end":22,"line_start":22},{"file":"references/how-to-play.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":17,"line_start":17}]},{"factor":"external_commands","evidence":[{"file":"references/how-to-play.md","line_end":83,"line_start":82},{"file":"references/how-to-play.md","line_end":84,"line_start":83},{"file":"references/how-to-play.md","line_end":89,"line_start":84},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":39,"line_start":39}]},{"factor":"env_access","evidence":[{"file":"references/how-to-play.md","line_end":82,"line_start":82},{"file":"references/how-to-play.md","line_end":83,"line_start":83}]}],"critical_findings":[{"title":"Untrusted Preflight Output Controls Agent Actions","locations":[{"file":"_shared/preflight.md","line_end":16,"line_start":7},{"file":"SKILL.md","line_end":26,"line_start":24}],"confidence":0.98,"description":"The skill runs onchainos preflight and requires the agent to do exactly what data.action says. It also downloads and runs an installer when missing.","review_kind":"security","source_category":"semantic","source_severity":"critical","confidence_reasoning":"The mandatory text explicitly delegates agent control to command output and bootstraps executable installation. No action allowlist or user approval is required."}],"high_findings":[{"title":"Path traversal sequence","locations":[{"file":"references/ai-guide.md","line_end":47,"line_start":47}],"confidence":0.92,"description":"- `loggedIn: false` → user is not logged in. Do **not** query identity. Hand off to the existing wal","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The flow loads ../../okx-agentic-wallet/SKILL.md outside the audited skill directory and follows its login instructions. That external content is not covered by this audit."},{"title":"Hidden file in home directory","locations":[{"file":"references/how-to-play.md","line_end":113,"line_start":113}],"confidence":0.97,"description":"- If the user came from picking the **Daily brief** option (option `4` in Variant A / option `3` in ","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The instruction loads and follows a hidden home-directory workflow after login. A modified local workflow can provide unreviewed agent instructions."},{"title":"Hidden file in home directory","locations":[{"file":"references/how-to-play.md","line_end":114,"line_start":114}],"confidence":0.96,"description":"- If the user came from picking any other **workflow pick** while logged out: automatically load the","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The instruction dynamically loads a corresponding workflow from ~/.onchainos and follows it. The target content is outside the audited package."},{"title":"Hidden file access","locations":[{"file":"references/how-to-play.md","line_end":113,"line_start":113}],"confidence":0.97,"description":"- If the user came from picking the **Daily brief** option (option `4` in Variant A / option `3` in ","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The agent is explicitly told to access and follow hidden local workflow content. This creates an unreviewed instruction boundary."},{"title":"Hidden file access","locations":[{"file":"references/how-to-play.md","line_end":114,"line_start":114}],"confidence":0.96,"description":"- If the user came from picking any other **workflow pick** while logged out: automatically load the","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The workflow path is in a hidden home directory and its content is followed automatically. No integrity check or confirmation is required."},{"title":"Path traversal sequence","locations":[{"file":"references/registered-home.md","line_end":12,"line_start":12}],"confidence":0.9,"description":"- **Status column** — read the agent's `status` field and map it per [`../../okx-ai/references/ident","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The flow reads status rules from ../../okx-ai outside the audited skill directory. Changes in that external file can alter agent behavior."},{"title":"Path traversal sequence","locations":[{"file":"references/registered-home.md","line_end":49,"line_start":49}],"confidence":0.97,"description":"Each \"not registered yet\" line on the home invites the user to register that role. If the user repli","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The agent loads an external identity registration playbook and follows it to completion. That unaudited dependency can initiate consequential registration actions."},{"title":"Path traversal sequence","locations":[{"file":"references/unregistered-role-selection.md","line_end":19,"line_start":19}],"confidence":0.97,"description":"| `1` (User) | `Registering your User identity, hang tight... ⏳` | [`../../okx-ai/references/identit","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"Selecting User loads and follows an identity registration file outside the audited directory. The external playbook can perform consequential actions."},{"title":"Path traversal sequence","locations":[{"file":"references/unregistered-role-selection.md","line_end":20,"line_start":20}],"confidence":0.97,"description":"| `2` (ASP) | `Registering your ASP identity, hang tight... ⏳` | [`../../okx-ai/references/identity-","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"Selecting ASP loads and follows an identity registration file outside the audited directory. Its instructions are not reviewed in this report."},{"title":"Path traversal sequence","locations":[{"file":"references/unregistered-role-selection.md","line_end":21,"line_start":21}],"confidence":0.98,"description":"| `3` (Evaluator) | `Registering your Evaluator identity, hang tight... ⏳` | [`../../okx-ai/referenc","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"Selecting Evaluator loads an external registration flow that can continue into staking. This consequential dependency is outside the audited package."},{"title":"Hidden file in home directory","locations":[{"file":"references/welcome.md","line_end":165,"line_start":165}],"confidence":0.94,"description":"| `3` | B | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The menu routes a selection to a hidden daily-brief workflow in the home directory. That target is outside this audited skill."},{"title":"Hidden file in home directory","locations":[{"file":"references/welcome.md","line_end":166,"line_start":166}],"confidence":0.94,"description":"| `4` | A | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The alternate menu variant routes to the same hidden home workflow. Its content can change independently of this package."},{"title":"Hidden file in home directory","locations":[{"file":"references/welcome.md","line_end":189,"line_start":189}],"confidence":0.98,"description":"- **Logged-in user**: load `~/.onchainos/workflows/daily-brief.md` directly and follow it.","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"Logged-in users cause the agent to load and follow ~/.onchainos/workflows/daily-brief.md directly. No content validation or approval is required."},{"title":"Hidden file access","locations":[{"file":"references/welcome.md","line_end":165,"line_start":165}],"confidence":0.94,"description":"| `3` | B | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This routing target accesses hidden local workflow content. The selected file is not part of the audited package."},{"title":"Hidden file access","locations":[{"file":"references/welcome.md","line_end":166,"line_start":166}],"confidence":0.94,"description":"| `4` | A | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This alternate menu path accesses the same hidden workflow. The agent later follows its unaudited instructions."},{"title":"Hidden file access","locations":[{"file":"references/welcome.md","line_end":189,"line_start":189}],"confidence":0.98,"description":"- **Logged-in user**: load `~/.onchainos/workflows/daily-brief.md` directly and follow it.","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The instruction explicitly reads and follows a hidden local Markdown file. A compromised workflow can control subsequent agent actions."},{"title":"Path traversal sequence","locations":[{"file":"SKILL.md","line_end":26,"line_start":26}],"confidence":0.97,"description":"**MUST**: Run the shared preflight **only for the onboarding flow** (§1 → `references/how-to-play.md","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The mandatory preflight first reads ../okx-agentic-wallet/_shared/preflight.md outside this skill. That external file can change the instructions executed during onboarding."},{"title":"Automatic Third-Party Plugin Installation Route","locations":[{"file":"references/welcome.md","line_end":162,"line_start":162}],"confidence":0.96,"description":"Selecting Polymarket invokes another skill that routes to or installs polymarket-plugin. The installation occurs through an unaudited dependency path.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The routing table explicitly states that the invoked skill installs the plugin. This report does not include that plugin or an approval requirement."}],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":9,"total_lines":756,"audit_model":"codex","audited_at":"2026-07-19T10:59:30.923+00:00","created_at":"2026-07-19T11:17:09.898409+00:00","static_findings":[{"id":"sensitive:_shared/preflight.md:18:environment-file-access","file":"_shared/preflight.md","pattern":"Environment file access","snippet":"- **A command is rate-limited** → the shared API key is throttled; suggest a personal key at the [OK","category":"sensitive","line_end":18,"severity":"high","line_start":18},{"id":"filesystem:references/ai-guide.md:47:path-traversal-sequence","file":"references/ai-guide.md","pattern":"Path traversal sequence","snippet":"- `loggedIn: false` → user is not logged in. Do **not** query identity. Hand off to the existing wal","category":"filesystem","line_end":47,"severity":"high","line_start":47},{"id":"network:references/ai-support.md:16:hardcoded-url","file":"references/ai-support.md","pattern":"Hardcoded URL","snippet":"🔗 OKX.AI Help Center: https://okx.ai","category":"network","line_end":16,"severity":"low","line_start":16},{"id":"network:references/ai-support.md:22:hardcoded-url","file":"references/ai-support.md","pattern":"Hardcoded URL","snippet":"1. Click the https://okx.ai link to go to the OKX.AI website","category":"network","line_end":22,"severity":"low","line_start":22},{"id":"external_commands:references/how-to-play.md:82:ruby-shell-backtick-execution","file":"references/how-to-play.md","pattern":"Ruby/shell backtick execution","snippet":"1. `OKX_API_KEY` — API Key","category":"external_commands","line_end":83,"severity":"medium","line_start":82},{"id":"external_commands:references/how-to-play.md:83:ruby-shell-backtick-execution","file":"references/how-to-play.md","pattern":"Ruby/shell backtick execution","snippet":"2. `OKX_SECRET_KEY` — Secret Key","category":"external_commands","line_end":84,"severity":"medium","line_start":83},{"id":"external_commands:references/how-to-play.md:84:ruby-shell-backtick-execution","file":"references/how-to-play.md","pattern":"Ruby/shell backtick execution","snippet":"3. `OKX_PASSPHRASE` — Passphrase","category":"external_commands","line_end":89,"severity":"medium","line_start":84},{"id":"network:references/how-to-play.md:86:hardcoded-url","file":"references/how-to-play.md","pattern":"Hardcoded URL","snippet":"You can find these at https://web3.okx.com/onchainos/dev-portal.","category":"network","line_end":86,"severity":"low","line_start":86},{"id":"filesystem:references/how-to-play.md:113:hidden-file-in-home-directory","file":"references/how-to-play.md","pattern":"Hidden file in home directory","snippet":"- If the user came from picking the **Daily brief** option (option `4` in Variant A / option `3` in ","category":"filesystem","line_end":113,"severity":"high","line_start":113},{"id":"filesystem:references/how-to-play.md:114:hidden-file-in-home-directory","file":"references/how-to-play.md","pattern":"Hidden file in home directory","snippet":"- If the user came from picking any other **workflow pick** while logged out: automatically load the","category":"filesystem","line_end":114,"severity":"high","line_start":114},{"id":"filesystem:references/how-to-play.md:113:hidden-file-access","file":"references/how-to-play.md","pattern":"Hidden file access","snippet":"- If the user came from picking the **Daily brief** option (option `4` in Variant A / option `3` in ","category":"filesystem","line_end":113,"severity":"medium","line_start":113},{"id":"filesystem:references/how-to-play.md:114:hidden-file-access","file":"references/how-to-play.md","pattern":"Hidden file access","snippet":"- If the user came from picking any other **workflow pick** while logged out: automatically load the","category":"filesystem","line_end":114,"severity":"medium","line_start":114},{"id":"env_access:references/how-to-play.md:82:generic-api-secret-keys","file":"references/how-to-play.md","pattern":"Generic API/secret keys","snippet":"1. `OKX_API_KEY` — API Key","category":"env_access","line_end":82,"severity":"high","line_start":82},{"id":"env_access:references/how-to-play.md:83:generic-api-secret-keys","file":"references/how-to-play.md","pattern":"Generic API/secret keys","snippet":"2. `OKX_SECRET_KEY` — Secret Key","category":"env_access","line_end":83,"severity":"high","line_start":83},{"id":"sensitive:references/how-to-play.md:105:environment-file-access","file":"references/how-to-play.md","pattern":"Environment file access","snippet":"- Do NOT walk the user through generating keys, opening URLs, creating `.env` files, editing `.gitig","category":"sensitive","line_end":105,"severity":"high","line_start":105},{"id":"blocker:references/how-to-play.md:128:system-reconnaissance","file":"references/how-to-play.md","pattern":"System reconnaissance","snippet":"| named DApp + action verb (Aave / Hyperliquid / etc.) | `okx-dapp-discovery` |","category":"blocker","line_end":128,"severity":"low","line_start":128},{"id":"filesystem:references/registered-home.md:12:path-traversal-sequence","file":"references/registered-home.md","pattern":"Path traversal sequence","snippet":"- **Status column** — read the agent's `status` field and map it per [`../../okx-ai/references/ident","category":"filesystem","line_end":12,"severity":"high","line_start":12},{"id":"filesystem:references/registered-home.md:49:path-traversal-sequence","file":"references/registered-home.md","pattern":"Path traversal sequence","snippet":"Each \"not registered yet\" line on the home invites the user to register that role. If the user repli","category":"filesystem","line_end":49,"severity":"high","line_start":49},{"id":"blocker:references/registered-home.md:22:network-reconnaissance","file":"references/registered-home.md","pattern":"Network reconnaissance","snippet":"2. Run `onchainos agent task-in-progress --agent-ids <id>` (the user may give several, comma-separat","category":"blocker","line_end":22,"severity":"low","line_start":22},{"id":"filesystem:references/unregistered-role-selection.md:19:path-traversal-sequence","file":"references/unregistered-role-selection.md","pattern":"Path traversal sequence","snippet":"| `1` (User) | `Registering your User identity, hang tight... ⏳` | [`../../okx-ai/references/identit","category":"filesystem","line_end":19,"severity":"high","line_start":19},{"id":"filesystem:references/unregistered-role-selection.md:20:path-traversal-sequence","file":"references/unregistered-role-selection.md","pattern":"Path traversal sequence","snippet":"| `2` (ASP) | `Registering your ASP identity, hang tight... ⏳` | [`../../okx-ai/references/identity-","category":"filesystem","line_end":20,"severity":"high","line_start":20},{"id":"filesystem:references/unregistered-role-selection.md:21:path-traversal-sequence","file":"references/unregistered-role-selection.md","pattern":"Path traversal sequence","snippet":"| `3` (Evaluator) | `Registering your Evaluator identity, hang tight... ⏳` | [`../../okx-ai/referenc","category":"filesystem","line_end":21,"severity":"high","line_start":21},{"id":"filesystem:references/welcome.md:165:hidden-file-in-home-directory","file":"references/welcome.md","pattern":"Hidden file in home directory","snippet":"| `3` | B | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","category":"filesystem","line_end":165,"severity":"high","line_start":165},{"id":"filesystem:references/welcome.md:166:hidden-file-in-home-directory","file":"references/welcome.md","pattern":"Hidden file in home directory","snippet":"| `4` | A | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","category":"filesystem","line_end":166,"severity":"high","line_start":166},{"id":"filesystem:references/welcome.md:189:hidden-file-in-home-directory","file":"references/welcome.md","pattern":"Hidden file in home directory","snippet":"- **Logged-in user**: load `~/.onchainos/workflows/daily-brief.md` directly and follow it.","category":"filesystem","line_end":189,"severity":"high","line_start":189},{"id":"filesystem:references/welcome.md:165:hidden-file-access","file":"references/welcome.md","pattern":"Hidden file access","snippet":"| `3` | B | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","category":"filesystem","line_end":165,"severity":"medium","line_start":165},{"id":"filesystem:references/welcome.md:166:hidden-file-access","file":"references/welcome.md","pattern":"Hidden file access","snippet":"| `4` | A | ☕ Daily on-chain brief | **Yes** (logged-out → Login Method Choice → resume) | `~/.oncha","category":"filesystem","line_end":166,"severity":"medium","line_start":166},{"id":"filesystem:references/welcome.md:189:hidden-file-access","file":"references/welcome.md","pattern":"Hidden file access","snippet":"- **Logged-in user**: load `~/.onchainos/workflows/daily-brief.md` directly and follow it.","category":"filesystem","line_end":189,"severity":"medium","line_start":189},{"id":"blocker:references/welcome.md:43:system-reconnaissance","file":"references/welcome.md","pattern":"System reconnaissance","snippet":"**MUST**: **Stale-session fallback.** `wallet status` can report `loggedIn: true` from cached creden","category":"blocker","line_end":43,"severity":"low","line_start":43},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**MUST**: Run the shared preflight **only for the onboarding flow** (§1 → `references/how-to-play.md","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **OKX.AI** (§2 → `references/ai-guide.md`): do **NOT** run the shared preflight here. `ai-guide.md","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Support** (§3 → `references/ai-support.md`): conversation-layer only (no CLI) — no preflight.","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| First-time / \"what is onchainos\" / \"what can it do\" / how to use / how to play / getting started /","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| OKX.AI — \"what is OKX.AI\" / \"how to use OKX.AI\" / \"OKX.AI quick start\" (any spelling variant) / re","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Customer support / talk to a human / customer service / file a complaint / give feedback / report ","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"network:SKILL.md:10:python-http-libraries","file":"SKILL.md","pattern":"Python HTTP libraries","snippet":"FAQs, or user-guide requests. Do not use for direct on-chain actions such as swaps, wallet,","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"network:SKILL.md:17:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: \"https://web3.okx.com\"","category":"network","line_end":17,"severity":"low","line_start":17},{"id":"filesystem:SKILL.md:26:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**MUST**: Run the shared preflight **only for the onboarding flow** (§1 → `references/how-to-play.md","category":"filesystem","line_end":26,"severity":"high","line_start":26}],"finding_verdicts":[{"id":"sensitive:_shared/preflight.md:18:environment-file-access","reason":"The line only recommends adding a locally created .env file to .gitignore after rate limiting. It neither reads nor requests environment files.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/ai-guide.md:47:path-traversal-sequence","reason":"The flow loads ../../okx-agentic-wallet/SKILL.md outside the audited skill directory and follows its login instructions. That external content is not covered by this audit.","verdict":"confirmed","severity":"high","confidence":0.92},{"id":"network:references/ai-support.md:16:hardcoded-url","reason":"This is a visible Help Center link in fixed support guidance. The file explicitly states that it performs no network request.","verdict":"false_positive","confidence":0.98},{"id":"network:references/ai-support.md:22:hardcoded-url","reason":"The URL is shown for the user to open manually. It does not send data or trigger an automatic request.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:references/how-to-play.md:82:ruby-shell-backtick-execution","reason":"Backticks format the OKX_API_KEY variable name as Markdown. No Ruby or shell execution appears on this line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:references/how-to-play.md:83:ruby-shell-backtick-execution","reason":"Backticks format the OKX_SECRET_KEY variable name as Markdown. They are not executable shell syntax in this document.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:references/how-to-play.md:84:ruby-shell-backtick-execution","reason":"Backticks format the OKX_PASSPHRASE variable name as Markdown. The line contains no command execution.","verdict":"false_positive","confidence":0.99},{"id":"network:references/how-to-play.md:86:hardcoded-url","reason":"This visible URL points users to the official OKX developer portal. The skill does not automatically request it or transmit data.","verdict":"false_positive","confidence":0.97},{"id":"filesystem:references/how-to-play.md:113:hidden-file-in-home-directory","reason":"The instruction loads and follows a hidden home-directory workflow after login. A modified local workflow can provide unreviewed agent instructions.","verdict":"confirmed","severity":"high","confidence":0.97},{"id":"filesystem:references/how-to-play.md:114:hidden-file-in-home-directory","reason":"The instruction dynamically loads a corresponding workflow from ~/.onchainos and follows it. The target content is outside the audited package.","verdict":"confirmed","severity":"high","confidence":0.96},{"id":"filesystem:references/how-to-play.md:113:hidden-file-access","reason":"The agent is explicitly told to access and follow hidden local workflow content. This creates an unreviewed instruction boundary.","verdict":"confirmed","severity":"high","confidence":0.97},{"id":"filesystem:references/how-to-play.md:114:hidden-file-access","reason":"The workflow path is in a hidden home directory and its content is followed automatically. No integrity check or confirmation is required.","verdict":"confirmed","severity":"high","confidence":0.96},{"id":"env_access:references/how-to-play.md:82:generic-api-secret-keys","reason":"The line documents an environment variable name, not a secret value or direct read. Nearby guidance forbids users from pasting credentials.","verdict":"false_positive","confidence":0.98},{"id":"env_access:references/how-to-play.md:83:generic-api-secret-keys","reason":"The line names the expected secret variable without reading or displaying its value. The documented login command handles credentials locally.","verdict":"false_positive","confidence":0.98},{"id":"sensitive:references/how-to-play.md:105:environment-file-access","reason":"This line explicitly prohibits creating or editing .env and .gitignore files. It does not instruct the agent to access either file.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/how-to-play.md:128:system-reconnaissance","reason":"The line is an intent-routing table entry for named decentralized applications. It performs no system enumeration or host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/registered-home.md:12:path-traversal-sequence","reason":"The flow reads status rules from ../../okx-ai outside the audited skill directory. Changes in that external file can alter agent behavior.","verdict":"confirmed","severity":"high","confidence":0.9},{"id":"filesystem:references/registered-home.md:49:path-traversal-sequence","reason":"The agent loads an external identity registration playbook and follows it to completion. That unaudited dependency can initiate consequential registration actions.","verdict":"confirmed","severity":"high","confidence":0.97},{"id":"blocker:references/registered-home.md:22:network-reconnaissance","reason":"The command performs an authenticated task lookup for user-provided Agent IDs. The flow limits requests and handles unauthorized IDs without retrying.","verdict":"false_positive","confidence":0.92},{"id":"filesystem:references/unregistered-role-selection.md:19:path-traversal-sequence","reason":"Selecting User loads and follows an identity registration file outside the audited directory. The external playbook can perform consequential actions.","verdict":"confirmed","severity":"high","confidence":0.97},{"id":"filesystem:references/unregistered-role-selection.md:20:path-traversal-sequence","reason":"Selecting ASP loads and follows an identity registration file outside the audited directory. Its instructions are not reviewed in this report.","verdict":"confirmed","severity":"high","confidence":0.97},{"id":"filesystem:references/unregistered-role-selection.md:21:path-traversal-sequence","reason":"Selecting Evaluator loads an external registration flow that can continue into staking. This consequential dependency is outside the audited package.","verdict":"confirmed","severity":"high","confidence":0.98},{"id":"filesystem:references/welcome.md:165:hidden-file-in-home-directory","reason":"The menu routes a selection to a hidden daily-brief workflow in the home directory. That target is outside this audited skill.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"filesystem:references/welcome.md:166:hidden-file-in-home-directory","reason":"The alternate menu variant routes to the same hidden home workflow. Its content can change independently of this package.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"filesystem:references/welcome.md:189:hidden-file-in-home-directory","reason":"Logged-in users cause the agent to load and follow ~/.onchainos/workflows/daily-brief.md directly. No content validation or approval is required.","verdict":"confirmed","severity":"high","confidence":0.98},{"id":"filesystem:references/welcome.md:165:hidden-file-access","reason":"This routing target accesses hidden local workflow content. The selected file is not part of the audited package.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"filesystem:references/welcome.md:166:hidden-file-access","reason":"This alternate menu path accesses the same hidden workflow. The agent later follows its unaudited instructions.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"filesystem:references/welcome.md:189:hidden-file-access","reason":"The instruction explicitly reads and follows a hidden local Markdown file. A compromised workflow can control subsequent agent actions.","verdict":"confirmed","severity":"high","confidence":0.98},{"id":"blocker:references/welcome.md:43:system-reconnaissance","reason":"The line handles an expected wallet balance failure and stale session. It does not enumerate the host system or unrelated resources.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"Backticks mark file paths as Markdown code. The separate cross-directory file access is real, but this line has no Ruby backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The backticked text is a reference filename and CLI name in prose. It is not an executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"This line describes a conversation-only support route and uses Markdown code formatting. It explicitly states that no CLI runs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The backticks format a local reference link in an intent table. They do not execute a shell or Ruby command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"This is a Markdown reference to the OKX.AI guide. No command substitution or external process occurs on the line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"This Markdown link routes support questions to a local document. The line contains no executable command.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:10:python-http-libraries","reason":"The detector matched the ordinary word requests in the skill description. There is no Python code or HTTP library use.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:17:hardcoded-url","reason":"This URL is homepage metadata for the official OKX website. It does not initiate a network connection.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:26:path-traversal-sequence","reason":"The mandatory preflight first reads ../okx-agentic-wallet/_shared/preflight.md outside this skill. That external file can change the instructions executed during onboarding.","verdict":"confirmed","severity":"high","confidence":0.97}],"semantic_findings":[{"title":"Untrusted Preflight Output Controls Agent Actions","severity":"critical","locations":[{"file":"_shared/preflight.md","line_end":16,"line_start":7},{"file":"SKILL.md","line_end":26,"line_start":24}],"confidence":0.98,"description":"The skill runs onchainos preflight and requires the agent to do exactly what data.action says. It also downloads and runs an installer when missing.","confidence_reasoning":"The mandatory text explicitly delegates agent control to command output and bootstraps executable installation. No action allowlist or user approval is required."},{"title":"Automatic Third-Party Plugin Installation Route","severity":"high","locations":[{"file":"references/welcome.md","line_end":162,"line_start":162}],"confidence":0.96,"description":"Selecting Polymarket invokes another skill that routes to or installs polymarket-plugin. The installation occurs through an unaudited dependency path.","confidence_reasoning":"The routing table explicitly states that the invoked skill installs the plugin. This report does not include that plugin or an approval requirement."}],"subject_marketplace_commit_sha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","subject_content_hash":"787338f26e6732e31c153f302988c77aa5864c78d2a014de63db05531798ceba","subject_tree_hash":"9a448339ed13355a5c4c725cc2a05149e326a1e91da555387d5e9b1ed9d56686","subject_plugin_path":"skills/internet-court/okx-guide","audit_payload_hash":"956b6254ceacbd989fe61e273d0be0fb","confirmed_risk_level":"critical","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","contentHash":"787338f26e6732e31c153f302988c77aa5864c78d2a014de63db05531798ceba","treeHash":"9a448339ed13355a5c4c725cc2a05149e326a1e91da555387d5e9b1ed9d56686","pluginPath":"skills/internet-court/okx-guide","auditPayloadHash":"956b6254ceacbd989fe61e273d0be0fb"},"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":"critical","confirmedFindingCount":2,"capabilityReviewCount":17,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"blocked","manualInstallPolicy":"allowed_with_warning","artifactSignatureState":"available","attestationState":"unavailable","verificationState":"not_verified"},"isLatest":true}}