Expo plugin runs /login on every message in Expo projects, making Claude Code unusable"

Resolved 💬 1 comment Opened Jun 6, 2026 by wpatrickclements Closed Jul 13, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Every message sent in Claude Code within an Expo project directory triggers an automatic /login call that fails with API Error: 401 Invalid authentication credentials. This happens regardless of what the user types — even "just say ready" or any unrelated instruction.
Steps to reproduce:

Create or open any Expo SDK project (tested with SDK 54 and SDK 56)
Run claude from within the project directory
Type any message
Claude Code immediately responds with "Please run /login · API Error: 401 Invalid authentication credentials" before processing the actual message

Expected behavior: Claude Code responds to the user's message normally.
Actual behavior: Every single message triggers /login first, which always fails with a 401. Claude Code becomes completely unresponsive to actual instructions.
What I've tried:

Deleted .claude folder — no effect
Set enabledPlugins: {} in .claude/settings.json — no effect
Set disabledPlugins — no effect
Renamed CLAUDE.md and AGENTS.md — no effect
Updated to Claude Code v2.1.167 — still present
Running from parent directory with --add-dir partially works but the error still fires on every message

Environment:

Claude Code version: 2.1.167
OS: macOS
Expo SDK: 56
The issue does NOT occur outside Expo project directories

Root cause hypothesis: The Expo plugin in the Claude Code marketplace auto-enables itself when it detects an Expo project (via package.json dependencies) and runs a /login verification on every message. There is no way to disable this behavior through settings.

What Should Happen?

Should run

Error Messages/Logs

❯ "just say ready"                                                                                                      

⏺ Please run /login · API Error: 401 Invalid authentication credentials

Steps to Reproduce

Every message sent in Claude Code within an Expo project directory triggers an automatic /login call that fails with API Error: 401 Invalid authentication credentials. This happens regardless of what the user types — even "just say ready" or any unrelated instruction.
Steps to reproduce:

Create or open any Expo SDK project (tested with SDK 54 and SDK 56)
Run claude from within the project directory
Type any message
Claude Code immediately responds with "Please run /login · API Error: 401 Invalid authentication credentials" before processing the actual message

Expected behavior: Claude Code responds to the user's message normally.
Actual behavior: Every single message triggers /login first, which always fails with a 401. Claude Code becomes completely unresponsive to actual instructions.
What I've tried:

Deleted .claude folder — no effect
Set enabledPlugins: {} in .claude/settings.json — no effect
Set disabledPlugins — no effect
Renamed CLAUDE.md and AGENTS.md — no effect
Updated to Claude Code v2.1.167 — still present
Running from parent directory with --add-dir partially works but the error still fires on every message

Environment:

Claude Code version: 2.1.167
OS: macOS
Expo SDK: 56
The issue does NOT occur outside Expo project directories

Root cause hypothesis: The Expo plugin in the Claude Code marketplace auto-enables itself when it detects an Expo project (via package.json dependencies) and runs a /login verification on every message. There is no way to disable this behavior through settings.

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Version 1.11187.4 (584005)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗