[BUG] Plugin marketplace sync causes indefinite hang on startup (Synology NAS / non-standard Linux)
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?
When running claude on a Synology NAS (DSM 7, x86_64) via SSH, the TUI completely hangs on startup — no output, no error, just a frozen terminal. The process stays alive but never renders the interactive UI.
Root cause identified: The plugin marketplace sync process (git pull from anthropics/claude-plugins-official) runs synchronously during startup with no timeout. On environments where git credential helpers are not properly configured or GitHub access is slow/blocked, this causes an indefinite hang.
Evidence:
claude --bareworks perfectly (skips plugin sync, hooks, LSP, etc.)claude -p "hello"also hangs (times out after 30s with no output)- Removing
known_marketplaces.jsoncontents and clearingplugins/marketplaces/,plugins/cache/,plugins/data/directories resolves the issue - Simply setting
"enabledPlugins": {}in settings.json is NOT sufficient — the marketplace sync still runs regardless - Network connectivity to
api.anthropic.comis confirmed working - OAuth credentials are valid and not expired
What Should Happen?
- Plugin marketplace sync should have a reasonable timeout (e.g., 5-10 seconds). If the sync fails or times out, Claude Code should start normally and log a warning rather than hanging indefinitely.
- Plugin sync should be asynchronous — it should not block the TUI from rendering. The UI should load first, and plugin updates can happen in the background.
- If no plugins are enabled (
"enabledPlugins": {}), marketplace sync should be skipped entirely — there is no reason to pull marketplace data if no plugins are active.
Error Messages/Logs
No error messages — the process hangs silently with no output.
Running with timeout shows only terminal control codes:
$ timeout 10 claude -p "hello"
[?1006l][?1003l][?1002l][?1000l][>4m][<u][?1004l][?2004l][?25h]]9;4;0;]]0;[?25h]
Steps to Reproduce
- Install Claude Code v2.1.85 on a Synology NAS (DSM 7, x86_64) via npm
- Log in with
claudeand authenticate via OAuth - Install any plugin (e.g.,
/plugins install typescript-lsp) — this registers a marketplace in~/.claude/plugins/known_marketplaces.json - Exit and run
claudeagain — the TUI hangs indefinitely on startup with no output and no error - Run
claude --bare— works perfectly, confirming the issue is in the startup initialization path - Clear marketplace data (
echo '{}' > ~/.claude/plugins/known_marketplaces.json) and runclaudeagain — works normally
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.85 (Claude Code)
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
Environment details:
- Synology NAS DS920+ (DSM 7.x, x86_64)
- Default shell:
/bin/sh(BusyBox ash) - Node.js: v20.20.0 (via nvm)
- SSH access from Windows PowerShell
- Auth: Claude Max (OAuth)
TERM=xterm-256color
Key finding: The known_marketplaces.json file contained a reference to the anthropics/claude-plugins-official GitHub repo. On startup, Claude Code attempts to git pull or git clone this repo synchronously. On the Synology NAS, where git credential helpers are not configured for GitHub, this operation blocks indefinitely waiting for credentials — but since it is running as a subprocess, there is no way to provide them, causing a silent hang.
Suggestion: Add a configurable timeout (default ~10s) for the marketplace sync operation, and make it non-blocking so the TUI can render while plugins sync in the background. Also, if enabledPlugins is empty, consider skipping marketplace sync entirely.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗