From 1c1ca5367db56285beba35307946919ce4630343 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Fri, 3 Jul 2026 10:47:09 -0700 Subject: [PATCH] agents: remove chrome-devtools MCP config Drop the chrome-devtools-mcp server/plugin from Claude and Codex configs, remove the Chrome DevTools desktop launcher (--remote-debugging-port) that existed for the MCP to connect to, and update the password-reset and email-unsubscribe-check skills to reference the Chrome browser extension instead. Chrome browser automation is now handled by the Chrome extension. Co-Authored-By: Claude Opus 4.8 --- .../skills/email-unsubscribe-check/SKILL.md | 2 +- .../agents/skills/password-reset/SKILL.md | 14 ++++---- dotfiles/claude/settings.json | 3 +- dotfiles/claude/settings.local.json | 8 ----- dotfiles/claude/settings.local.json.example | 8 ----- dotfiles/codex/config.toml | 4 --- nixos/imalison.nix | 33 ------------------- 7 files changed, 9 insertions(+), 63 deletions(-) diff --git a/dotfiles/agents/skills/email-unsubscribe-check/SKILL.md b/dotfiles/agents/skills/email-unsubscribe-check/SKILL.md index 707cc194..3983fd79 100644 --- a/dotfiles/agents/skills/email-unsubscribe-check/SKILL.md +++ b/dotfiles/agents/skills/email-unsubscribe-check/SKILL.md @@ -57,7 +57,7 @@ Two approaches depending on the sender: **For emails with unsubscribe links:** - Read the email via `gws gmail` to find the unsubscribe URL (usually at bottom of email body) -- Navigate to the URL with Chrome DevTools MCP +- Navigate to the URL in the browser via the Chrome extension - Take a snapshot, find the confirmation button/checkbox - Click through to complete the unsubscribe - Verify the confirmation page diff --git a/dotfiles/agents/skills/password-reset/SKILL.md b/dotfiles/agents/skills/password-reset/SKILL.md index 990fa148..8b69b928 100644 --- a/dotfiles/agents/skills/password-reset/SKILL.md +++ b/dotfiles/agents/skills/password-reset/SKILL.md @@ -1,19 +1,19 @@ --- name: password-reset -description: Use when the user wants to reset or rotate a website or service password end-to-end, including finding the right `pass` entry, generating a new password with `xkcdpassgen`, retrieving reset emails through `gws gmail` or a local mail CLI, completing the reset in the browser with Chrome DevTools MCP, and updating the password store safely without losing entry metadata. +description: Use when the user wants to reset or rotate a website or service password end-to-end, including finding the right `pass` entry, generating a new password with `xkcdpassgen`, retrieving reset emails through `gws gmail` or a local mail CLI, completing the reset in the browser via the Chrome extension, and updating the password store safely without losing entry metadata. --- # Password Reset ## Overview -Handle password resets end-to-end. Prefer `gws gmail` for reset-email retrieval, Chrome DevTools MCP for website interaction, and the local `xkcdpassgen` helper for password generation. +Handle password resets end-to-end. Prefer `gws gmail` for reset-email retrieval, the Chrome browser extension for website interaction, and the local `xkcdpassgen` helper for password generation. ## Tool Priorities - Prefer `gws gmail` over opening Gmail in the browser. - If `gws` is unavailable, use an installed Gmail CLI or IMAP-based mail tool if one exists locally. Inspect the environment first instead of guessing command names. -- Prefer Chrome DevTools MCP for all browser interaction. +- Prefer the Chrome browser extension for all browser interaction. - Use `pass find` and `pass show` before asking the user for credentials or account details. ## Password Generation @@ -73,14 +73,14 @@ If the site rejects the password because of policy constraints, keep the canonic 2. Run `pass find ` and inspect likely matches with `pass show`. 3. Capture existing metadata before generating a new password. 4. Generate the candidate password into a temporary `pass` entry with `xkcdpassgen`. -5. Start the reset flow in Chrome DevTools MCP: +5. Start the reset flow in the browser via the Chrome extension: - navigate to the login or account page - use the site's "forgot password" flow, or - sign in and navigate to security settings if the user asked for a rotation rather than a reset 6. Use `gws gmail` to retrieve the reset email when needed: - search recent mail by sender domain, subject, or reset-related keywords - open the message and extract the reset link - - navigate to that link in Chrome DevTools MCP + - navigate to that link in the browser via the Chrome extension 7. Fill the new password from the temporary `pass` entry and complete the form. 8. Verify success: - confirmation page, or @@ -99,14 +99,14 @@ If `gws` is unavailable, use an installed Gmail CLI or local mail helper only as ## Browser Guidance -Use Chrome DevTools MCP to complete the reset flow directly: +Use the Chrome browser extension to complete the reset flow directly: - navigate to the reset or security page - take snapshots to identify the relevant inputs and buttons - click, fill, and submit through the site UI - verify the success state before updating the canonical `pass` entry -Prefer MCP interaction over describing steps for the user to perform manually. +Prefer driving the browser directly over describing steps for the user to perform manually. ## Credentials And Account Data diff --git a/dotfiles/claude/settings.json b/dotfiles/claude/settings.json index b371caad..509fe7ea 100644 --- a/dotfiles/claude/settings.json +++ b/dotfiles/claude/settings.json @@ -13,8 +13,7 @@ }, "enabledPlugins": { "superpowers@superpowers-marketplace": true, - "agent-browser@agent-browser": true, - "chrome-devtools-mcp@claude-plugins-official": true + "agent-browser@agent-browser": true }, "effortLevel": "high", "skipDangerousModePermissionPrompt": true, diff --git a/dotfiles/claude/settings.local.json b/dotfiles/claude/settings.local.json index ab5bd118..5ddf2817 100644 --- a/dotfiles/claude/settings.local.json +++ b/dotfiles/claude/settings.local.json @@ -15,13 +15,6 @@ "set -euo pipefail; export GITEA_BASE_URL='https://dev.railbird.ai'; export GITEA_ACCESS_TOKEN=\"$(pass show claude-mcp/gitea-access-token | head -1)\"; exec docker run -i --rm -e GITEA_ACCESS_TOKEN -e GITEA_BASE_URL docker.gitea.com/gitea-mcp-server" ] }, - "chrome-devtools": { - "command": "npx", - "args": [ - "chrome-devtools-mcp@latest", - "--auto-connect" - ] - }, "imap-email": { "command": "bash", "args": [ @@ -32,7 +25,6 @@ } }, "enabledMcpjsonServers": [ - "chrome-devtools", "imap-email" ], "enableAllProjectMcpServers": true diff --git a/dotfiles/claude/settings.local.json.example b/dotfiles/claude/settings.local.json.example index 1b78b684..9b2947ff 100644 --- a/dotfiles/claude/settings.local.json.example +++ b/dotfiles/claude/settings.local.json.example @@ -21,13 +21,6 @@ "docker.gitea.com/gitea-mcp-server" ] }, - "chrome-devtools": { - "command": "npx", - "args": [ - "chrome-devtools-mcp@latest", - "--auto-connect" - ] - }, "imap-email": { "command": "npx", "args": ["-y", "imap-email-mcp"], @@ -36,7 +29,6 @@ } }, "enabledMcpjsonServers": [ - "chrome-devtools", "imap-email" ], "enableAllProjectMcpServers": true diff --git a/dotfiles/codex/config.toml b/dotfiles/codex/config.toml index 6c7a663a..1513d545 100644 --- a/dotfiles/codex/config.toml +++ b/dotfiles/codex/config.toml @@ -8,10 +8,6 @@ suppress_unstable_features_warning = true # this file, ~/.codex/config.local.toml, and Codex-owned sections preserved in # ~/.codex/config.local-state.toml. -[mcp_servers.chrome-devtools] -command = "/usr/bin/env" -args = ["PATH=/etc/profiles/per-user/imalison/bin:/run/current-system/sw/bin:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin", "npx", "-y", "chrome-devtools-mcp@latest", "--auto-connect"] - [mcp_servers.observability] command = "/usr/bin/env" args = ["PATH=/etc/profiles/per-user/imalison/bin:/run/current-system/sw/bin:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin", "npx", "-y", "@google-cloud/observability-mcp"] diff --git a/nixos/imalison.nix b/nixos/imalison.nix index 5080a0ca..9213f318 100644 --- a/nixos/imalison.nix +++ b/nixos/imalison.nix @@ -153,38 +153,5 @@ in { WantedBy = ["graphical-session.target"]; }; }; - - xdg.desktopEntries.google-chrome-devtools = { - name = "Google Chrome (DevTools)"; - genericName = "Web Browser"; - comment = "Access the Internet"; - icon = "google-chrome"; - terminal = false; - type = "Application"; - categories = ["Network" "WebBrowser"]; - mimeType = [ - "application/rdf+xml" - "application/rss+xml" - "application/xhtml+xml" - "application/xhtml_xml" - "application/xml" - "text/html" - "text/xml" - "x-scheme-handler/http" - "x-scheme-handler/https" - "x-scheme-handler/google-chrome" - ]; - exec = "${pkgs.google-chrome}/bin/google-chrome-stable --user-data-dir=/home/imalison/.cache/google-chrome-devtools --remote-debugging-port=46649 --remote-allow-origins=http://127.0.0.1,http://localhost %U"; - actions = { - new-window = { - name = "New Window"; - exec = "${pkgs.google-chrome}/bin/google-chrome-stable --user-data-dir=/home/imalison/.cache/google-chrome-devtools --remote-debugging-port=46649 --remote-allow-origins=http://127.0.0.1,http://localhost"; - }; - new-private-window = { - name = "New Incognito Window"; - exec = "${pkgs.google-chrome}/bin/google-chrome-stable --user-data-dir=/home/imalison/.cache/google-chrome-devtools --remote-debugging-port=46649 --remote-allow-origins=http://127.0.0.1,http://localhost --incognito"; - }; - }; - }; }; }