Claude Code remote-controlでbad option --sdk-urlエラーが出たときの対処法

公開日:
目次

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へ移行しておくのがおすすめです。

脚注
  1. GitHub Issue - Remote control fails with npm installation ↩︎

  2. Claude Code公式ドキュメント - Installation ↩︎