目次
nodebrew経由のNode.js環境で claude remote-control が動かない問題がありました。Native Installerで入れ直したら解決したので備忘録です。
エラーの内容
claude remote-control を実行すると、以下のエラーでセッションが失敗します。
Session failed: /path/to/.nodebrew/node/v22.20.0/bin/node: bad option: --sdk-url session_xxx
Node.jsのバイナリに --sdk-url というオプションが渡されてしまい、不明なオプションとして拒否されています。
私の環境はこんな感じです。
- macOS
- Node.js v22.20.0(nodebrew)
- Claude Code v2.1.56(npm経由でインストール)
原因
remote-control が子プロセスを起動する際、 process.execPath を使っています。これはNode.jsのバイナリパスを返すプロパティです。
npm経由でインストールした場合、 claude コマンドの実体は cli.js へのシンボリックリンクになっています。そのため process.execPath は常にnodeバイナリを指してしまいます。
--sdk-url はClaude CLIのオプションなので、nodeバイナリに渡しても当然エラーになります。これはClaude Code側のバグです[1]。
解決策
npm版をアンインストールして、Native Installerで入れ直します。
npm uninstall -g @anthropic-ai/claude-code
curl -fsSL https://claude.ai/install.sh | sh
Native Installerではスタンドアロンバイナリとして ~/.local/bin/claude にインストールされます。Node.jsへの依存がなくなるので、 process.execPath の問題が解消します。
インストール後、 claude remote-control が正常に動作することを確認できました。
補足
npm経由のインストールは公式でも非推奨(deprecated)になっています[2]。Remote Control以外でも予期しない問題が起きる可能性があるので、まだnpm版を使っている方はこの機会にNative Installerへ移行しておくのがおすすめです。
