[BUG] Figma MCP OAuth: state lost between turns on Windows
Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 1 comment · opened Jul 25, 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?
Complete_authentication always returns 'No OAuth flow is in progress' on Windows because PKCE state is not persisted between conversation turns.
What Should Happen?
- The PKCE OAuth state (code verifier + state parameter) generated by authenticate should be persisted to disk (e.g., in ~/.claude/) rather than stored only in memory. This way, when complete_authentication is called in the next conversation turn, the state is still available and the token exchange can complete successfully.
- Alternatively, the local callback server on port 3118 (which already handles the browser redirect and shows "Authentication successful") should store the obtained token in .credentials.json AND clear the mcp-needs-auth-cache.json entry atomically, so that complete_authentication is not needed at all when the browser flow succeeds.
Error Messages/Logs
Steps to Reproduce
- Install Figma plugin: claude plugin install figma@claude-plugins-official
- Call mcp__plugin_figma_figma__authenticate → get authorization URL
- Open URL in browser → authorize on Figma → browser redirects to localhost:3118/callback → shows "Authentication successful"
- Paste callback URL back into Claude Code chat
- Call mcp__plugin_figma_figma__complete_authentication with callback URL
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.220 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗