{"data":{"skill":{"slug":"chromedevtools-chrome-devtools-cli","name":"chrome-devtools-cli","icon":"📦","repo":"https://github.com/chromedevtools/chrome-devtools-mcp/tree/f08dbe152502d66e75fa07fb2588dc0feb42bc20/skills/chrome-devtools-cli","status":"approved","author":"chromedevtools","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"68ea0f10-5bf2-482f-bc6f-d94d7f7882a5","skill_id":"de7d8abf-7310-4bd0-a3ad-20dd5a10b3af","version":1,"content_hash":"v3:e406bf64b5db6e514879399e87b346fa7ff7c2fb:433e1148b2887fad30fd0c3c8860223fe9ec5d77a9240f7b6819679681b7d34f:54bf1abedeeb2318441acd58a05f59f4b21f3f564f1f61cd289c14d45bdad252:736b696c6c732f6368726f6d65646576746f6f6c732f6368726f6d652d646576746f6f6c732d636c69:bbc1cd6a2ce60a93f798a76fbbf2650f","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 51 static matches are false positives: Markdown formatting, example URLs, and legitimate browser operations do not establish the reported threats. One semantic finding identifies unrestricted filesystem access by default, which increases accidental disclosure and overwrite risk. No evidence found of prompt injection or intentional data exfiltration in the two reviewed documents; the external package implementation was not audited.","remediation":[{"issue":"Unrestricted filesystem access is the documented default for file saving and uploads.","severity":"medium","suggestion":"Recommend --allowUnrestrictedPaths=false during setup and store artifacts in the OS temporary directory. Require explicit approval for broader paths and each file upload."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":6,"line_start":6},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":23,"line_start":20},{"file":"SKILL.md","line_end":27,"line_start":23},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":33,"line_start":31},{"file":"SKILL.md","line_end":36,"line_start":33},{"file":"SKILL.md","line_end":37,"line_start":36},{"file":"SKILL.md","line_end":41,"line_start":37},{"file":"SKILL.md","line_end":59,"line_start":41},{"file":"SKILL.md","line_end":63,"line_start":59},{"file":"SKILL.md","line_end":76,"line_start":63},{"file":"SKILL.md","line_end":80,"line_start":76},{"file":"SKILL.md","line_end":86,"line_start":80},{"file":"SKILL.md","line_end":90,"line_start":86},{"file":"SKILL.md","line_end":96,"line_start":90},{"file":"SKILL.md","line_end":100,"line_start":96},{"file":"SKILL.md","line_end":102,"line_start":100},{"file":"SKILL.md","line_end":104,"line_start":102},{"file":"SKILL.md","line_end":106,"line_start":104},{"file":"SKILL.md","line_end":118,"line_start":106},{"file":"SKILL.md","line_end":122,"line_start":118},{"file":"SKILL.md","line_end":130,"line_start":122},{"file":"SKILL.md","line_end":134,"line_start":130},{"file":"SKILL.md","line_end":153,"line_start":134},{"file":"SKILL.md","line_end":157,"line_start":153},{"file":"SKILL.md","line_end":163,"line_start":157},{"file":"SKILL.md","line_end":165,"line_start":163},{"file":"SKILL.md","line_end":167,"line_start":165},{"file":"SKILL.md","line_end":172,"line_start":167},{"file":"SKILL.md","line_end":176,"line_start":172},{"file":"SKILL.md","line_end":178,"line_start":176},{"file":"SKILL.md","line_end":186,"line_start":178},{"file":"SKILL.md","line_end":190,"line_start":186},{"file":"SKILL.md","line_end":195,"line_start":190}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":168,"line_start":168},{"file":"SKILL.md","line_end":169,"line_start":169},{"file":"SKILL.md","line_end":170,"line_start":170},{"file":"SKILL.md","line_end":171,"line_start":171}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Unrestricted Filesystem Access Enabled by Default","locations":[{"file":"SKILL.md","line_end":27,"line_start":27}],"confidence":0.95,"description":"The documented default permits uploads and file saving anywhere on the system. Automation mistakes can disclose unrelated files or overwrite files outside the task scope.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The text explicitly states unrestricted access is enabled by default and covers uploads and file saving. This establishes excessive scope, not proven exploitation."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":211,"audit_model":"codex","audited_at":"2026-10-10T14:09:50.8+00:00","created_at":"2026-10-11T03:30:57.970851+00:00","static_findings":[{"id":"blocker:references/installation.md:13:system-reconnaissance","file":"references/installation.md","pattern":"System reconnaissance","snippet":"- **Permission errors:** If you encounter `EACCES` or permission errors during installation, avoid u","category":"blocker","line_end":13,"severity":"low","line_start":13},{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The `chrome-devtools-mcp` CLI lets you interact with the browser from your terminal.","category":"external_commands","line_end":6,"severity":"medium","line_start":6},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Execute**: Run tools directly. If you don't know the target page's ID, run `chrome-devtools lis","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":"2. **Inspect**: Use `chrome-devtools take_snapshot <pageId>` to get an element `<uid>`.","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Act**: Use `chrome-devtools click <pageId> <uid>`, `chrome-devtools fill <pageId> <uid> <value>","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":23,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":27,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"By default, the CLI has full filesystem access (`--allowUnrestrictedPaths=true`), allowing file-savi","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sh","category":"external_commands","line_end":33,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":36,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `--help` on any command for usage details.","category":"external_commands","line_end":37,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Output defaults to plain Markdown-like text; pass `--output-format=json` for JSON.","category":"external_commands","line_end":41,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":59,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":63,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":76,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":80,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":86,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":90,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":96,"severity":"medium","line_start":90},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":100,"severity":"medium","line_start":96},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":102,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":104,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"### Memory Debugging (requires `--memoryDebugging=true`)","category":"external_commands","line_end":106,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":118,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":122,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":130,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":134,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":153,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":157,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":163,"severity":"medium","line_start":157},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":165,"severity":"medium","line_start":163},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"## Progressive Web Apps (requires `--categoryPwa=true`)","category":"external_commands","line_end":167,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":172,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":176,"severity":"medium","line_start":172},{"id":"external_commands:SKILL.md:176:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Experimental tools are disabled by default. Enable them with the corresponding flag during `start`.","category":"external_commands","line_end":178,"severity":"medium","line_start":176},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":186,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":190,"severity":"medium","line_start":186},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":195,"severity":"medium","line_start":190},{"id":"network:SKILL.md:21:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"uid=1_0 RootWebArea \"Example Domain\" url=\"https://example.com/\"","category":"network","line_end":21,"severity":"low","line_start":21},{"id":"network:SKILL.md:66:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools navigate_page 1 --url \"https://example.com\" # Navigates the currently selected page ","category":"network","line_end":66,"severity":"low","line_start":66},{"id":"network:SKILL.md:68:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools navigate_page 1 --url \"https://example.com\" --timeout 5000 # Navigate with a timeout","category":"network","line_end":68,"severity":"low","line_start":68},{"id":"network:SKILL.md:71:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools new_page \"https://example.com\" # Creates a new page","category":"network","line_end":71,"severity":"low","line_start":71},{"id":"network:SKILL.md:72:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools new_page \"https://example.com\" --background true --timeout 5000 # Create new page in","category":"network","line_end":72,"severity":"low","line_start":72},{"id":"network:SKILL.md:73:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools new_page \"https://example.com\" --isolatedContext \"ctx\" # Create new page with isolat","category":"network","line_end":73,"severity":"low","line_start":73},{"id":"network:SKILL.md:168:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools install_pwa \"https://example.com/\" \"https://example.com/\" # Install PWA by manifest ","category":"network","line_end":168,"severity":"low","line_start":168},{"id":"network:SKILL.md:169:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools launch_pwa \"https://example.com/\" # Launch installed PWA","category":"network","line_end":169,"severity":"low","line_start":169},{"id":"network:SKILL.md:170:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools get_os_app_state \"https://example.com/\" # Get OS app installation state","category":"network","line_end":170,"severity":"low","line_start":170},{"id":"network:SKILL.md:171:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"chrome-devtools uninstall_pwa \"https://example.com/\" # Uninstall PWA and close windows","category":"network","line_end":171,"severity":"low","line_start":171},{"id":"blocker:SKILL.md:124:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"chrome-devtools get_network_request 1 --reqid 1 --requestFilePath \"req.md\" # Get request by id and s","category":"blocker","line_end":124,"severity":"low","line_start":124},{"id":"blocker:SKILL.md:150:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"chrome-devtools take_screenshot 1 --uid \"id\" --filePath \"s.png\" # Take a screenshot of an element","category":"blocker","line_end":150,"severity":"low","line_start":150},{"id":"blocker:SKILL.md:50:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"chrome-devtools handle_dialog 1 dismiss --promptText \"hi\" # Dismiss a dialog with prompt text","category":"blocker","line_end":50,"severity":"low","line_start":50}],"finding_verdicts":[{"id":"blocker:references/installation.md:13:system-reconnaissance","reason":"The troubleshooting text explicitly discourages sudo and recommends a version manager or alternate npm directory. It performs no system enumeration.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","reason":"Backticks format the CLI package name in Markdown prose. They are not Ruby execution or shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"Inline backticks document page listing and service lifecycle commands for browser automation. No executable backtick substitution or injected shell argument appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"Backticks mark a snapshot command and argument placeholders as inline code. Reading the page accessibility tree is the stated workflow, not shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Inline code documents click and fill commands with positional placeholders. These are ordinary browser interactions, not executable Ruby or shell backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"The backticks open a Markdown fence containing a sample accessibility snapshot. The enclosed text is output, not an executable command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The matched backticks close the snapshot example fence. The subsequent section documents permissions rather than shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"Backticks format permission flags and parameter names, not executable substitutions. The unrestricted access default is separately documented as a semantic permission risk.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"A Markdown code fence presents generic CLI syntax with placeholders. No Ruby code or backtick command substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The match is the closing Markdown fence for generic command syntax. Adjacent text explains positional arguments and optional flags.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"Backticks format help and output-format flags in documentation. Neither flag executes embedded commands or introduces shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"Inline backticks describe JSON output selection, followed by a Markdown fence. This is presentation syntax, not dynamic command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The fence contains browser input examples with literal arguments, including a named upload file. No shell backtick substitution or concealed command appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"This closes the browser input example fence and precedes the navigation section. Markdown delimiters are not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The fence documents navigation with example.com URLs and explicit browser options. It contains no backtick substitution or malicious payload.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The matched delimiter closes navigation documentation. The following emulation heading does not execute any shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"A Markdown fence contains browser emulation and resizing examples with literal values. These testing options do not constitute backtick command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"The backticks close the emulation example fence. No command substitution exists in the matched section boundary.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"The fenced examples start, analyze, and stop browser performance traces using explicit paths. They contain no Ruby execution or shell backtick substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","reason":"The matched backticks close performance documentation before the memory heading. They are Markdown formatting, not executable syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The fence documents saving a browser heap snapshot to a relative path. It does not invoke a backtick expression or hidden command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for the heap snapshot example. The next heading describes an optional debugging flag.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"Inline backticks format the memory debugging prerequisite flag. The heading does not execute shell or Ruby code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The fenced commands inspect explicitly named heap snapshots and node identifiers. No backtick substitution, obfuscation, or unrelated process execution appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"The match closes the heap debugging example fence. The following network heading is ordinary documentation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"A Markdown fence documents inspecting captured browser requests and saving local artifacts. No shell backtick substitution or external data recipient is specified.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"The backticks close network inspection examples before a debugging heading. They are not executable command delimiters.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The fence documents page JavaScript evaluation, console inspection, Lighthouse, and screenshots. Browser debugging is explicit; no shell backtick execution is shown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"This closes the debugging example fence and precedes extension documentation. The delimiters do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","reason":"The fence documents explicit extension management commands with placeholder paths and IDs. No untrusted extension source or backtick substitution is specified.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","reason":"The matched delimiter closes extension examples. The following PWA prerequisite is documentation, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"Backticks format the opt-in PWA flag within a heading. They do not run Ruby or shell expressions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"The fenced PWA management examples consistently use example.com. The delimiter is Markdown, with no hidden command substitution or data transmission payload.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"The backticks close the PWA examples before the experimental features section. They are formatting, not executable shell syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:176:ruby-shell-backtick-execution","reason":"Inline backticks format the start command while explaining disabled-by-default experimental features. No backtick command execution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The fence documents opt-in experimental browser tools using literal example inputs. It contains no executable backtick substitution or instruction to trust malicious tool output.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","reason":"The matched backticks close experimental examples and precede service management documentation. This is not shell or Ruby execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","reason":"The fence contains explicit CLI start, status, and stop examples. These normal service controls contain no backtick substitution or unrelated executable.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:21:hardcoded-url","reason":"The example.com URL appears in sample accessibility snapshot output. It is not a request instruction or exfiltration destination.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:66:hardcoded-url","reason":"The command navigates a browser to the reserved example.com demonstration domain. No credentials, local file contents, or outbound payload are included.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:68:hardcoded-url","reason":"This demonstrates navigation to example.com with a timeout. The fixed example URL contains no sensitive data or suspicious recipient.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:71:hardcoded-url","reason":"Opening a page at example.com illustrates expected browser navigation. The example carries no secret or exfiltration parameter.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:72:hardcoded-url","reason":"The example opens example.com in the background with a timeout. Background page creation does not establish covert data transfer.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:73:hardcoded-url","reason":"The command demonstrates opening example.com in an isolated browser context. The reserved URL and literal context name show no exfiltration intent.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:168:hardcoded-url","reason":"The opt-in PWA installation example uses example.com for both manifest identity and installation URL. No malicious app source or secret-bearing request is specified.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:169:hardcoded-url","reason":"The URL identifies a sample installed PWA for launching. It does not encode sensitive data or identify an exfiltration endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:170:hardcoded-url","reason":"The example.com value identifies the sample PWA whose installation state is queried. This is app-specific inspection, not network probing.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:171:hardcoded-url","reason":"The command removes the explicitly identified sample PWA. The URL is an app identifier, not a data collection destination.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:124:system-reconnaissance","reason":"The command saves one captured browser request to req.md for debugging. It does not enumerate the host system or transmit collected information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:150:system-reconnaissance","reason":"The command captures a selected browser element to a named image file. It performs no host enumeration or system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:50:network-reconnaissance","reason":"The command dismisses a browser dialog using literal prompt text. It does not probe network hosts, ports, or services.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Unrestricted Filesystem Access Enabled by Default","severity":"medium","locations":[{"file":"SKILL.md","line_end":27,"line_start":27}],"confidence":0.95,"description":"The documented default permits uploads and file saving anywhere on the system. Automation mistakes can disclose unrelated files or overwrite files outside the task scope.","confidence_reasoning":"The text explicitly states unrestricted access is enabled by default and covers uploads and file saving. This establishes excessive scope, not proven exploitation."}],"subject_marketplace_commit_sha":"e406bf64b5db6e514879399e87b346fa7ff7c2fb","subject_content_hash":"433e1148b2887fad30fd0c3c8860223fe9ec5d77a9240f7b6819679681b7d34f","subject_tree_hash":"54bf1abedeeb2318441acd58a05f59f4b21f3f564f1f61cd289c14d45bdad252","subject_plugin_path":"skills/chromedevtools/chrome-devtools-cli","audit_payload_hash":"bbc1cd6a2ce60a93f798a76fbbf2650f","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"e406bf64b5db6e514879399e87b346fa7ff7c2fb","contentHash":"433e1148b2887fad30fd0c3c8860223fe9ec5d77a9240f7b6819679681b7d34f","treeHash":"54bf1abedeeb2318441acd58a05f59f4b21f3f564f1f61cd289c14d45bdad252","pluginPath":"skills/chromedevtools/chrome-devtools-cli","auditPayloadHash":"bbc1cd6a2ce60a93f798a76fbbf2650f"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/chromedevtools-chrome-devtools-cli/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}