{"data":{"skill":{"slug":"internet-court-altllm-portal-auth","name":"altllm-portal-auth","icon":"📦","repo":"https://github.com/internet-court/internet-court-skill/tree/main/vendored/altlayer/altllm-portal-auth","status":"approved","author":"internet-court","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"0a8ef6aa-dabf-4703-821d-5202fba643f2","skill_id":"301d8dde-873e-4376-8274-a934abedd128","version":2,"content_hash":"v3:3f6e026a3363e0954ede7bef0cfe88d4475de137:511409592c1a4d7c384d5c5be9d0f1b05708202408eb4c2327acbc097e500d71:4f7ccc7261debbb18e6d6731404dc2a6b1d1cb5ee4f161595a16c10df2518f13:736b696c6c732f696e7465726e65742d636f7572742f616c746c6c6d2d706f7274616c2d61757468:55803a00421cf123dc2dbe7ccdb003cf","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"The skill documents wallet authentication, including access to private keys and storage of a local Portal session. The primary risks are intentional credential handling, an explicitly unsafe argv option, and unreviewed shared instructions outside this package. Hardcoded URLs and Markdown command formatting are benign in context.","remediation":[{"issue":"Private-key inputs are accepted from environment variables, files, and command arguments.","severity":"high","suggestion":"Default to external signing or environment-based input, warn before every key use, and remove or strongly gate inline argv key support."},{"issue":"Portal session data is stored in a hidden home-directory file.","severity":"medium","suggestion":"Create the file with owner-only permissions, avoid logging its contents, document its sensitivity, and provide a clear removal command."},{"issue":"The skill requires parent-directory shared instructions that were not audited with this package.","severity":"medium","suggestion":"Vendor and audit the shared guidance with the skill, or replace the references with a short, immutable safe setup procedure."},{"issue":"Non-default API hosts can receive authentication flows.","severity":"medium","suggestion":"Require explicit user confirmation and display the full target origin before requesting a challenge or sending a signature."}],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"references/cli-reference.md","line_end":10,"line_start":10},{"file":"references/cli-reference.md","line_end":40,"line_start":40},{"file":"references/cli-reference.md","line_end":50,"line_start":50},{"file":"references/cli-reference.md","line_end":64,"line_start":64},{"file":"references/cli-reference.md","line_end":85,"line_start":85},{"file":"references/cli-reference.md","line_end":119,"line_start":119}]},{"factor":"filesystem","evidence":[{"file":"references/cli-reference.md","line_end":20,"line_start":20},{"file":"references/cli-reference.md","line_end":113,"line_start":113},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":38,"line_start":38}]},{"factor":"env_access","evidence":[{"file":"references/cli-reference.md","line_end":8,"line_start":8},{"file":"references/cli-reference.md","line_end":12,"line_start":12},{"file":"references/cli-reference.md","line_end":31,"line_start":31}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":9,"line_start":9},{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":40,"line_start":40}]}],"critical_findings":[],"high_findings":[{"title":"Generic API/secret keys","locations":[{"file":"references/cli-reference.md","line_end":8,"line_start":8}],"confidence":0.94,"description":"ALTLLM_WALLET_PRIVATE_KEY=<private-key> \\","review_kind":"capability","source_category":"env_access","source_severity":"high","confidence_reasoning":"The command reads a wallet private key from an environment variable to sign in. A private key is highly sensitive and exposure can compromise the wallet."},{"title":"Generic API/secret keys","locations":[{"file":"references/cli-reference.md","line_end":12,"line_start":12}],"confidence":0.94,"description":"--private-key-env ALTLLM_WALLET_PRIVATE_KEY","review_kind":"capability","source_category":"env_access","source_severity":"high","confidence_reasoning":"The command explicitly selects an environment variable containing a wallet private key. This is sensitive credential access, even though it is a safer input method than argv."},{"title":"Generic API/secret keys","locations":[{"file":"references/cli-reference.md","line_end":31,"line_start":31}],"confidence":0.94,"description":"- `ALTLLM_WALLET_PRIVATE_KEY=<private-key>` with the default `--private-key-env ALTLLM_WALLET_PRIVAT","review_kind":"capability","source_category":"env_access","source_severity":"high","confidence_reasoning":"The reference documents private-key environment-variable input. Handling this credential presents a material wallet-compromise risk if the environment is exposed."},{"title":"Path traversal sequence","locations":[{"file":"SKILL.md","line_end":14,"line_start":14}],"confidence":0.68,"description":"> - `../_shared/preflight.md`","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The skill directs the agent to read a file outside the skill directory. The referenced content is not included in this audit, so it creates an unreviewed instruction dependency."},{"title":"Path traversal sequence","locations":[{"file":"SKILL.md","line_end":15,"line_start":15}],"confidence":0.68,"description":"> - `../_shared/session-and-target.md`","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The skill directs the agent to read a second parent-directory file. Its unreviewed content could alter behavior outside the audited package."},{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.89,"description":"- Save the resulting session to `~/.altllm/portal-cli-session.json` unless overridden.","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The skill directs storage of an authenticated Portal session under the user home directory. Session credentials require restrictive permissions and explicit user consent."},{"title":"Crypto seed/private key mention","locations":[{"file":"SKILL.md","line_end":21,"line_start":21}],"confidence":0.93,"description":"| `login-wallet --private-key-env <name>` | Sign in with a locally available private key from an env","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The workflow authorizes use of a wallet private key from an environment variable. A compromised environment can expose the wallet credential."},{"title":"Crypto seed/private key mention","locations":[{"file":"SKILL.md","line_end":22,"line_start":22}],"confidence":0.93,"description":"| `login-wallet --private-key-file <path>` | Sign in with a locally available private key from a fil","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The workflow authorizes reading a wallet private key from a file. The key file must be selected and protected carefully."},{"title":"Crypto seed/private key mention","locations":[{"file":"SKILL.md","line_end":23,"line_start":23}],"confidence":0.98,"description":"| `login-wallet --private-key <hex> --allow-unsafe-private-key-argv` | Sign in with an inline privat","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The workflow permits an inline private key in command arguments when an unsafe flag is supplied. Arguments can leak through process listings and shell history."}],"medium_findings":[{"title":"Hidden file access","locations":[{"file":"references/cli-reference.md","line_end":20,"line_start":20}],"confidence":0.86,"description":"\"sessionFile\": \"/Users/<user>/.altllm/portal-cli-session.json\",","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The documented workflow stores an authentication session in a hidden home-directory file. Session-token storage is sensitive and requires secure permissions and user awareness."},{"title":"Hidden file access","locations":[{"file":"references/cli-reference.md","line_end":113,"line_start":113}],"confidence":0.86,"description":"\"sessionFile\": \"/Users/<user>/.altllm/portal-cli-session.json\",","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"Representative logout output identifies the hidden session file. The file can contain authentication state and must be protected from other local users."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.89,"description":"- Save the resulting session to `~/.altllm/portal-cli-session.json` unless overridden.","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The skill directs storage of an authenticated Portal session in a hidden file. This is sensitive local authentication state."},{"title":"Unreviewed Shared-Instruction Dependency","locations":[{"file":"SKILL.md","line_end":15,"line_start":13}],"confidence":0.88,"description":"The skill instructs agents to read two parent-directory shared files before use, but those files are outside the audited package. Their contents could introduce unsafe commands or prompt-injection instructions after publication.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The explicit precondition to read external shared files is present, while the audit covers only two package files. Their content and safety cannot be verified from this skill."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":168,"audit_model":"claude","audited_at":"2026-07-21T02:33:25.191+00:00","created_at":"2026-07-21T02:42:25.268511+00:00","static_findings":[{"id":"network:references/cli-reference.md:10:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"--base-url https://platform-api.altllm.ai \\","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"network:references/cli-reference.md:40:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"--base-url https://platform-api.altllm.ai \\","category":"network","line_end":40,"severity":"low","line_start":40},{"id":"network:references/cli-reference.md:50:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"--base-url https://platform-api.altllm.ai \\","category":"network","line_end":50,"severity":"low","line_start":50},{"id":"network:references/cli-reference.md:64:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"\"message\": \"platform.altllm.ai wants you to sign in with your Ethereum account:\\n0x11111111111111111","category":"network","line_end":64,"severity":"low","line_start":64},{"id":"network:references/cli-reference.md:85:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"--base-url https://platform-api.altllm.ai \\","category":"network","line_end":85,"severity":"low","line_start":85},{"id":"network:references/cli-reference.md:119:hardcoded-url","file":"references/cli-reference.md","pattern":"Hardcoded URL","snippet":"\"baseUrl\": \"https://platform-api.altllm.ai\",","category":"network","line_end":119,"severity":"low","line_start":119},{"id":"filesystem:references/cli-reference.md:20:hidden-file-access","file":"references/cli-reference.md","pattern":"Hidden file access","snippet":"\"sessionFile\": \"/Users/<user>/.altllm/portal-cli-session.json\",","category":"filesystem","line_end":20,"severity":"medium","line_start":20},{"id":"filesystem:references/cli-reference.md:113:hidden-file-access","file":"references/cli-reference.md","pattern":"Hidden file access","snippet":"\"sessionFile\": \"/Users/<user>/.altllm/portal-cli-session.json\",","category":"filesystem","line_end":113,"severity":"medium","line_start":113},{"id":"env_access:references/cli-reference.md:8:generic-api-secret-keys","file":"references/cli-reference.md","pattern":"Generic API/secret keys","snippet":"ALTLLM_WALLET_PRIVATE_KEY=<private-key> \\","category":"env_access","line_end":8,"severity":"high","line_start":8},{"id":"env_access:references/cli-reference.md:12:generic-api-secret-keys","file":"references/cli-reference.md","pattern":"Generic API/secret keys","snippet":"--private-key-env ALTLLM_WALLET_PRIVATE_KEY","category":"env_access","line_end":12,"severity":"high","line_start":12},{"id":"env_access:references/cli-reference.md:31:generic-api-secret-keys","file":"references/cli-reference.md","pattern":"Generic API/secret keys","snippet":"- `ALTLLM_WALLET_PRIVATE_KEY=<private-key>` with the default `--private-key-env ALTLLM_WALLET_PRIVAT","category":"env_access","line_end":31,"severity":"high","line_start":31},{"id":"sensitive:references/cli-reference.md:93:crypto-seed-private-key-mention","file":"references/cli-reference.md","pattern":"Crypto seed/private key mention","snippet":"- If no local private key and no signature are provided, `login-wallet` returns a challenge payload.","category":"sensitive","line_end":93,"severity":"high","line_start":93},{"id":"blocker:references/cli-reference.md:77:system-reconnaissance","file":"references/cli-reference.md","pattern":"System reconnaissance","snippet":"Alias: `node dist/cli.js whoami`","category":"blocker","line_end":77,"severity":"low","line_start":77},{"id":"external_commands:SKILL.md:9:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Wallet login and session bootstrap for the local `altllm` CLI, including external signers such as Pr","category":"external_commands","line_end":9,"severity":"medium","line_start":9},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Before the first `altllm` command in a fresh checkout, read and follow:","category":"external_commands","line_end":13,"severity":"medium","line_start":13},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> - `../_shared/preflight.md`","category":"external_commands","line_end":14,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> - `../_shared/session-and-target.md`","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `login-wallet --private-key-env <name>` | Sign in with a locally available private key from an env","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `login-wallet --private-key-file <path>` | Sign in with a locally available private key from a fil","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `login-wallet --private-key <hex> --allow-unsafe-private-key-argv` | Sign in with an inline privat","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `login-wallet --prepare` | Fetch a challenge for external signing |","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `login-wallet --nonce <nonce> --signature <sig>` | Verify an externally signed challenge and save ","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `status` | Show saved Portal session user and target URL status without exposing the token |","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `logout` | Remove the local saved Portal session file |","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If neither a local private key nor `--signature` is available, return the challenge payload and st","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- For non-default, non-loopback API hosts, prefer `--prepare` and external signing instead of local ","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Save the resulting session to `~/.altllm/portal-cli-session.json` unless overridden.","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":"- Use `status` or its `whoami` alias to confirm the saved user and target URL before running live co","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `logout` only removes the local session file. It does not revoke API keys.","category":"external_commands","line_end":40,"severity":"medium","line_start":40},{"id":"filesystem:SKILL.md:14:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"> - `../_shared/preflight.md`","category":"filesystem","line_end":14,"severity":"high","line_start":14},{"id":"filesystem:SKILL.md:15:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"> - `../_shared/session-and-target.md`","category":"filesystem","line_end":15,"severity":"high","line_start":15},{"id":"filesystem:SKILL.md:38:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- Save the resulting session to `~/.altllm/portal-cli-session.json` unless overridden.","category":"filesystem","line_end":38,"severity":"high","line_start":38},{"id":"filesystem:SKILL.md:38:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- Save the resulting session to `~/.altllm/portal-cli-session.json` unless overridden.","category":"filesystem","line_end":38,"severity":"medium","line_start":38},{"id":"sensitive:SKILL.md:21:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"| `login-wallet --private-key-env <name>` | Sign in with a locally available private key from an env","category":"sensitive","line_end":21,"severity":"high","line_start":21},{"id":"sensitive:SKILL.md:22:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"| `login-wallet --private-key-file <path>` | Sign in with a locally available private key from a fil","category":"sensitive","line_end":22,"severity":"high","line_start":22},{"id":"sensitive:SKILL.md:23:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"| `login-wallet --private-key <hex> --allow-unsafe-private-key-argv` | Sign in with an inline privat","category":"sensitive","line_end":23,"severity":"high","line_start":23},{"id":"sensitive:SKILL.md:31:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"- Do not assume the CLI must control the wallet private key.","category":"sensitive","line_end":31,"severity":"high","line_start":31},{"id":"sensitive:SKILL.md:34:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"- If neither a local private key nor `--signature` is available, return the challenge payload and st","category":"sensitive","line_end":34,"severity":"high","line_start":34},{"id":"blocker:SKILL.md:33:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- External signers such as Privy are valid as long as they return a standard wallet signature for th","category":"blocker","line_end":33,"severity":"low","line_start":33},{"id":"blocker:SKILL.md:39:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Use `status` or its `whoami` alias to confirm the saved user and target URL before running live co","category":"blocker","line_end":39,"severity":"low","line_start":39}],"finding_verdicts":[{"id":"network:references/cli-reference.md:10:hardcoded-url","reason":"The URL is the documented default AltLLM API endpoint in a local-signing example. No evidence shows that it transmits unrelated data.","verdict":"false_positive","confidence":0.98},{"id":"network:references/cli-reference.md:40:hardcoded-url","reason":"The URL is the documented default AltLLM API endpoint in an explicitly guarded inline-key example. It is not a hidden or unrelated network destination.","verdict":"false_positive","confidence":0.98},{"id":"network:references/cli-reference.md:50:hardcoded-url","reason":"The URL is the documented API endpoint used to request a sign-in challenge. The example supports the stated authentication workflow.","verdict":"false_positive","confidence":0.98},{"id":"network:references/cli-reference.md:64:hardcoded-url","reason":"This is a representative Ethereum sign-in message that identifies the expected portal URI. It does not instruct an unapproved network action.","verdict":"false_positive","confidence":0.97},{"id":"network:references/cli-reference.md:85:hardcoded-url","reason":"The URL is the documented API endpoint for verification of an externally signed challenge. It aligns with the stated workflow.","verdict":"false_positive","confidence":0.98},{"id":"network:references/cli-reference.md:119:hardcoded-url","reason":"The URL appears in representative logout output as the saved base URL. It is not an instruction to contact a hidden endpoint.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/cli-reference.md:20:hidden-file-access","reason":"The documented workflow stores an authentication session in a hidden home-directory file. Session-token storage is sensitive and requires secure permissions and user awareness.","verdict":"confirmed","confidence":0.86},{"id":"filesystem:references/cli-reference.md:113:hidden-file-access","reason":"Representative logout output identifies the hidden session file. The file can contain authentication state and must be protected from other local users.","verdict":"confirmed","confidence":0.86},{"id":"env_access:references/cli-reference.md:8:generic-api-secret-keys","reason":"The command reads a wallet private key from an environment variable to sign in. A private key is highly sensitive and exposure can compromise the wallet.","verdict":"confirmed","confidence":0.94},{"id":"env_access:references/cli-reference.md:12:generic-api-secret-keys","reason":"The command explicitly selects an environment variable containing a wallet private key. This is sensitive credential access, even though it is a safer input method than argv.","verdict":"confirmed","confidence":0.94},{"id":"env_access:references/cli-reference.md:31:generic-api-secret-keys","reason":"The reference documents private-key environment-variable input. Handling this credential presents a material wallet-compromise risk if the environment is exposed.","verdict":"confirmed","confidence":0.94},{"id":"sensitive:references/cli-reference.md:93:crypto-seed-private-key-mention","reason":"This line explains fallback behavior when no private key or signature is supplied. It does not request, disclose, or exfiltrate a key.","verdict":"false_positive","confidence":0.94},{"id":"blocker:references/cli-reference.md:77:system-reconnaissance","reason":"The whoami alias is documented to inspect the saved application session, not to enumerate the host system. Its intent is ordinary authentication status confirmation.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:9:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown formatting around documented CLI commands and options. The skill contains no Ruby code, shell substitution, or executable command invocation at this location.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:14:path-traversal-sequence","reason":"The skill directs the agent to read a file outside the skill directory. The referenced content is not included in this audit, so it creates an unreviewed instruction dependency.","verdict":"confirmed","confidence":0.68},{"id":"filesystem:SKILL.md:15:path-traversal-sequence","reason":"The skill directs the agent to read a second parent-directory file. Its unreviewed content could alter behavior outside the audited package.","verdict":"confirmed","confidence":0.68},{"id":"filesystem:SKILL.md:38:hidden-file-in-home-directory","reason":"The skill directs storage of an authenticated Portal session under the user home directory. Session credentials require restrictive permissions and explicit user consent.","verdict":"confirmed","confidence":0.89},{"id":"filesystem:SKILL.md:38:hidden-file-access","reason":"The skill directs storage of an authenticated Portal session in a hidden file. This is sensitive local authentication state.","verdict":"confirmed","confidence":0.89},{"id":"sensitive:SKILL.md:21:crypto-seed-private-key-mention","reason":"The workflow authorizes use of a wallet private key from an environment variable. A compromised environment can expose the wallet credential.","verdict":"confirmed","confidence":0.93},{"id":"sensitive:SKILL.md:22:crypto-seed-private-key-mention","reason":"The workflow authorizes reading a wallet private key from a file. The key file must be selected and protected carefully.","verdict":"confirmed","confidence":0.93},{"id":"sensitive:SKILL.md:23:crypto-seed-private-key-mention","reason":"The workflow permits an inline private key in command arguments when an unsafe flag is supplied. Arguments can leak through process listings and shell history.","verdict":"confirmed","confidence":0.98},{"id":"sensitive:SKILL.md:31:crypto-seed-private-key-mention","reason":"This is protective guidance stating that the CLI need not control a private key. It does not access or request a credential.","verdict":"false_positive","confidence":0.96},{"id":"sensitive:SKILL.md:34:crypto-seed-private-key-mention","reason":"This is protective fallback guidance that returns a challenge instead of requiring a key. It does not expose a credential.","verdict":"false_positive","confidence":0.95},{"id":"blocker:SKILL.md:33:system-reconnaissance","reason":"The line describes compatibility with an external signing provider, not host or network reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:39:system-reconnaissance","reason":"The line requests application session and target URL confirmation before live commands. It is limited authentication status checking, not system reconnaissance.","verdict":"false_positive","confidence":0.94}],"semantic_findings":[{"title":"Unreviewed Shared-Instruction Dependency","severity":"medium","locations":[{"file":"SKILL.md","line_end":15,"line_start":13}],"confidence":0.88,"description":"The skill instructs agents to read two parent-directory shared files before use, but those files are outside the audited package. Their contents could introduce unsafe commands or prompt-injection instructions after publication.","confidence_reasoning":"The explicit precondition to read external shared files is present, while the audit covers only two package files. Their content and safety cannot be verified from this skill."}],"subject_marketplace_commit_sha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","subject_content_hash":"511409592c1a4d7c384d5c5be9d0f1b05708202408eb4c2327acbc097e500d71","subject_tree_hash":"4f7ccc7261debbb18e6d6731404dc2a6b1d1cb5ee4f161595a16c10df2518f13","subject_plugin_path":"skills/internet-court/altllm-portal-auth","audit_payload_hash":"55803a00421cf123dc2dbe7ccdb003cf","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"3f6e026a3363e0954ede7bef0cfe88d4475de137","contentHash":"511409592c1a4d7c384d5c5be9d0f1b05708202408eb4c2327acbc097e500d71","treeHash":"4f7ccc7261debbb18e6d6731404dc2a6b1d1cb5ee4f161595a16c10df2518f13","pluginPath":"skills/internet-court/altllm-portal-auth","auditPayloadHash":"55803a00421cf123dc2dbe7ccdb003cf"},"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":"high","confirmedFindingCount":4,"capabilityReviewCount":9,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"unavailable","verificationState":"not_verified"},"isLatest":true}}