{"data":{"skill":{"slug":"internet-court-nla-arbitrate","name":"nla-arbitrate","icon":"📦","repo":"https://github.com/internet-court/internet-court-skill/tree/main/vendored/arkhai/nla-arbitrate","status":"approved","author":"internet-court","authorVersion":"1.0","skillstoreRevision":1},"audit":{"id":"07378393-69d8-4a6c-ae49-5e1cefb62516","skill_id":"6d12f44e-07ad-4b4a-b6ec-c7455c9a8763","version":2,"content_hash":"v3:3f6e026a3363e0954ede7bef0cfe88d4475de137:4107bf9fb798525cf2340c8b9dfebb49cd0ea90a1f376eb415d02767e8c875c7:dae741228d7ad14538e7e6a4581d964072d8def5da831e548ef3bd3887a325da:736b696c6c732f696e7465726e65742d636f7572742f6e6c612d617262697472617465:599f574d8b3d1826009d70f46e7f4385","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"This skill is documentation-only guidance for the third-party `nla` CLI, scoped by `allowed-tools: Bash(nla:*)`. All 26 static findings are false positives: the flagged backtick/code-fence patterns are markdown formatting in a how-to guide, the reconnaissance flags are documented `nla escrow:*` usage examples, and the env/private-key mentions describe how a user supplies their own wallet key and LLM API keys to the CLI. No finding shows the skill itself reading, transmitting, or exfiltrating secrets, and no prompt-injection or data-exfiltration intent was found. Residual risk is inherent to the underlying tool (on-chain transactions cost real funds and require a private key), not to this skill's instructions.","remediation":[{"issue":"Auto mode delegates arbitration decisions to an external LLM that submits permanent, gas-costing on-chain attestations without a human confirmation step.","severity":"low","suggestion":"Recommend users start in interactive mode and reserve `--auto` for trusted, low-value escrows; document that auto decisions are irreversible on-chain."},{"issue":"The skill documents passing secrets on the command line (`--private-key`, `--openai-api-key sk-...`), which can leak into shell history and process listings.","severity":"low","suggestion":"Prefer `nla wallet:set` and environment variables over inline `--private-key` / `--*-api-key` flags in examples, and note the shell-history exposure of inline secret flags."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":29,"line_start":27},{"file":"SKILL.md","line_end":35,"line_start":29},{"file":"SKILL.md","line_end":41,"line_start":35},{"file":"SKILL.md","line_end":47,"line_start":41},{"file":"SKILL.md","line_end":53,"line_start":47},{"file":"SKILL.md","line_end":63,"line_start":53},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":65,"line_start":65},{"file":"SKILL.md","line_end":73,"line_start":71},{"file":"SKILL.md","line_end":79,"line_start":73},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":86,"line_start":85},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":101,"line_start":92}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":86,"line_start":86}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":102,"audit_model":"claude","audited_at":"2026-07-21T03:59:45.424+00:00","created_at":"2026-07-21T04:17:25.478778+00:00","static_findings":[{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Manually arbitrate escrow fulfillments using the `nla escrow:arbitrate` CLI command, bypassing the a","category":"external_commands","line_end":13,"severity":"medium","line_start":13},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":29,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":35,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":41,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":47,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":53,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":63,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Then prompts for a decision: `approve`, `reject`, or `skip`.","category":"external_commands","line_end":63,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"In **auto mode** (`--auto`), the command uses the LLM provider/model specified in the escrow's deman","category":"external_commands","line_end":65,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":73,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":79,"severity":"medium","line_start":73},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- In interactive mode, type `skip` or `s` to skip a fulfillment without deciding","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `nla` CLI installed and configured","category":"external_commands","line_end":86,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Private key set via `nla wallet:set`, `--private-key` flag, or `PRIVATE_KEY` env var","category":"external_commands","line_end":86,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":101,"severity":"medium","line_start":92},{"id":"env_access:SKILL.md:80:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- Auto mode reads LLM API keys from environment variables (OPENAI_API_KEY, etc.) or CLI flags","category":"env_access","line_end":80,"severity":"high","line_start":80},{"id":"env_access:SKILL.md:86:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- Private key set via `nla wallet:set`, `--private-key` flag, or `PRIVATE_KEY` env var","category":"env_access","line_end":86,"severity":"high","line_start":86},{"id":"sensitive:SKILL.md:86:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"- Private key set via `nla wallet:set`, `--private-key` flag, or `PRIVATE_KEY` env var","category":"sensitive","line_end":86,"severity":"high","line_start":86},{"id":"blocker:SKILL.md:37:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid <uid>","category":"blocker","line_end":37,"severity":"low","line_start":37},{"id":"blocker:SKILL.md:40:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid <uid> --auto","category":"blocker","line_end":40,"severity":"low","line_start":40},{"id":"blocker:SKILL.md:49:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid all","category":"blocker","line_end":49,"severity":"low","line_start":49},{"id":"blocker:SKILL.md:52:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid all --auto","category":"blocker","line_end":52,"severity":"low","line_start":52},{"id":"blocker:SKILL.md:72:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:status --escrow-uid <escrow_uid>","category":"blocker","line_end":72,"severity":"low","line_start":72},{"id":"blocker:SKILL.md:94:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid all","category":"blocker","line_end":94,"severity":"low","line_start":94},{"id":"blocker:SKILL.md:97:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid 0xabc123... --auto","category":"blocker","line_end":97,"severity":"low","line_start":97},{"id":"blocker:SKILL.md:100:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"nla escrow:arbitrate --escrow-uid all --auto --openai-api-key sk-...","category":"blocker","line_end":100,"severity":"low","line_start":100}],"finding_verdicts":[{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","reason":"The backtick is markdown inline-code around the command name `nla escrow:arbitrate` in prose, not shell command substitution. It documents a CLI command; nothing executes.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"Line 27 is a ```bash fenced-code-block opener in documentation, not backtick execution. It introduces the `nla wallet:show` example.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"Line 29 is a closing code fence (```) in the markdown guide, not executable shell backticks.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"Line 35 is a ```bash fence opening a documentation example of `nla escrow:arbitrate`, not command substitution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"Line 41 is a closing markdown code fence, not shell backtick execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"Line 47 is a ```bash fence opening the 'scan for all pending requests' example, not executable backticks.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"Line 53 is a closing code fence in the documentation, not shell command substitution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The backticks wrap the literal decision words `approve`, `reject`, `skip` as inline code in prose. No command executes.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"Inline-code backticks around the `--auto` flag name in explanatory prose; not command substitution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"Line 71 is a ```bash fence opening the `nla escrow:status` verification example, not executable backticks.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","reason":"Line 73 is a closing markdown code fence, not shell backtick execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"Inline-code backticks around the literal input words `skip`/`s` in prose describing interactive mode; not command execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"Inline-code backtick around the tool name `nla` in a prerequisites bullet; documentation only.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"Inline-code backticks around the `nla wallet:set` command and `PRIVATE_KEY` in a prerequisites bullet describing user setup; the skill does not itself run or read these.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"Line 92 is a ```bash fence opening the Examples block of documented `nla` invocations, not executable backticks.","verdict":"false_positive","confidence":0.95},{"id":"env_access:SKILL.md:80:generic-api-secret-keys","reason":"Line 80 documents that the underlying nla CLI's auto mode reads LLM API keys from env vars; the skill's instructions never read, echo, or transmit these keys. Scoped by `allowed-tools: Bash(nla:*)`. Kept-adjacent risk is the CLI's, not this documentation's.","verdict":"false_positive","confidence":0.85},{"id":"env_access:SKILL.md:86:generic-api-secret-keys","reason":"Describes user-side wallet key configuration options (`nla wallet:set`, `--private-key`, `PRIVATE_KEY`) as a prerequisite. The skill does not access or exfiltrate the key; it merely tells the user how to configure the CLI they already run.","verdict":"false_positive","confidence":0.85},{"id":"sensitive:SKILL.md:86:crypto-seed-private-key-mention","reason":"A private-key mention in a prerequisites bullet documenting how the user provides their own wallet key to the nla CLI. No key value is present, harvested, or transmitted; this is legitimate setup guidance for a blockchain tool.","verdict":"false_positive","confidence":0.8},{"id":"blocker:SKILL.md:37:system-reconnaissance","reason":"`nla escrow:arbitrate --escrow-uid <uid>` is a documented, domain-specific escrow command, not host/system reconnaissance. It queries on-chain escrow state via the scoped nla CLI.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:40:system-reconnaissance","reason":"`nla escrow:arbitrate --escrow-uid <uid> --auto` is a documented escrow-arbitration example, not system reconnaissance. No host enumeration occurs.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:49:system-reconnaissance","reason":"`nla escrow:arbitrate --escrow-uid all` lists the user's own pending escrow fulfillments via the nla CLI; it is application-domain data, not host or network reconnaissance.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:52:system-reconnaissance","reason":"`nla escrow:arbitrate --escrow-uid all --auto` is a documented bulk-arbitration example scoped to the nla CLI, not system reconnaissance.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:72:system-reconnaissance","reason":"`nla escrow:status --escrow-uid <escrow_uid>` checks the status of a specific escrow after arbitration; it is a domain query, not host reconnaissance.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:94:system-reconnaissance","reason":"Example invocation `nla escrow:arbitrate --escrow-uid all` in the Examples section; documented escrow usage, not system reconnaissance.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:97:system-reconnaissance","reason":"Example `nla escrow:arbitrate --escrow-uid 0xabc123... --auto` shows arbitrating one escrow by UID; domain example, not host enumeration.","verdict":"false_positive","confidence":0.9},{"id":"blocker:SKILL.md:100:system-reconnaissance","reason":"Example `nla escrow:arbitrate --escrow-uid all --auto --openai-api-key sk-...` documents a full auto-arbitration invocation; it is a usage example, not reconnaissance. (Inline API-key flag exposure is noted in remediation, not a reconnaissance risk.)","verdict":"false_positive","confidence":0.9}],"semantic_findings":[],"subject_marketplace_commit_sha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","subject_content_hash":"4107bf9fb798525cf2340c8b9dfebb49cd0ea90a1f376eb415d02767e8c875c7","subject_tree_hash":"dae741228d7ad14538e7e6a4581d964072d8def5da831e548ef3bd3887a325da","subject_plugin_path":"skills/internet-court/nla-arbitrate","audit_payload_hash":"599f574d8b3d1826009d70f46e7f4385","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","contentHash":"4107bf9fb798525cf2340c8b9dfebb49cd0ea90a1f376eb415d02767e8c875c7","treeHash":"dae741228d7ad14538e7e6a4581d964072d8def5da831e548ef3bd3887a325da","pluginPath":"skills/internet-court/nla-arbitrate","auditPayloadHash":"599f574d8b3d1826009d70f46e7f4385"},"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":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"unavailable","verificationState":"not_verified"},"isLatest":true}}