MCP servers start before user config is loaded during /login, ignoring mcpServers settings
Resolved 💬 3 comments Opened Apr 6, 2026 by alphadp Closed Apr 10, 2026
Description
When a Claude Code session requires re-authentication (/login), the chrome-devtools-mcp MCP server is launched before the user's .claude.json configuration is loaded. This means any args specified in the mcpServers config (such as --chromeArg=--disable-gpu) are not applied during the login flow.
Environment
- OS: WSL2 (Ubuntu 24.04) on Windows, GPU disabled at system level
- Chrome: 146.0.7680.177 (system install)
- Claude Code: latest
- MCP:
chrome-devtools-mcp@latest
Config (working when logged in)
// ~/.claude.json → mcpServers
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--chromeArg=--disable-gpu",
"--chromeArg=--disable-software-rasterizer"
]
}
Steps to reproduce
- Have a WSL2 system with GPU disabled
- Configure
chrome-devtoolsMCP with--disable-gpuflags in~/.claude.json - Let the session expire / log out
- Run
/login— Claude Code launches Chrome via MCP to open the OAuth page - Chrome starts without
--disable-gpuflags → attempts GPU rendering → freezes the entire WSL2 system
Expected behavior
MCP server arguments from ~/.claude.json should be applied even during the /login flow, or the login flow should not use MCP servers that depend on user configuration.
Additional context
- Puppeteer (used by
chrome-devtools-mcp) launches Chrome directly (/opt/google/chrome/chrome), bypassing the system wrapper script that readschrome-flags.conf— so system-level Chrome flag configs are also ignored. - Workaround: replace
/opt/google/chrome/chromewith a wrapper script that always injects--disable-gpu.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗