devcontainerを使った開発でClaude Codeを利用している際に、コンテナを再作成するたびにセッションがリセットされて毎回Get Startedから始まるのがうっとうしい問題を解決したときの備忘録。
TL;DR
以下の設定をdevcontainer.json
に追記することで、devcontainerを再作成してもClaudeのセッションが維持される。
"remoteUser": "vscode", "mounts": [ "source=claude-code-config,target=/home/vscode/.claude,type=volume" ], "postCreateCommand": "chown -R vscode:vscode ~"
問題の発生
devcontainerを立ち上げるたびに毎回Claude CodeのGet Startedから始まってしまう問題に遭遇した。 せっかく認証やプロジェクトの設定をしても、コンテナを作り直すたびにリセットされるのは非常に面倒。
解決への道のり
公式ドキュメントを参考にする
まずはAnthropic公式のドキュメントとサンプルを確認してみる。 - 公式ドキュメント - GitHubサンプル
設定ファイルのマウントを試す
Claudeの設定ファイルは/home/vscode/.claude
に保存されているので、これをvolumeでマウントしてみる。
"mounts": [ "source=claude-code-config,target=/home/vscode/.claude,type=volume" ]
しかし、これだけだと権限問題でうまくいかない。
権限問題の解決
調べてみると、devcontainerでvolumeマウントしたファイルの権限はデフォルトでrootになってしまうらしい。 そのため、コンテナ起動時に権限をremoteUserで指定したユーザーに変更する必要がある。
最初は.claude
ディレクトリだけの権限を変更しようとしたが、まだ作成中なのかエラーになってしまう。postCreateCommand
は作成後に呼ばれるはずなのだが...
とりあえずhomeディレクトリ全体の権限を変更すると確実に動作するので、それで対応することにした。
"postCreateCommand": "chown -R vscode:vscode ~"
最終的な設定
結果的に、以下の3つの設定をdevcontainer.json
に追加することで問題が解決した。
{ "remoteUser": "vscode", "mounts": [ "source=claude-code-config,target=/home/vscode/.claude,type=volume" ], "postCreateCommand": "chown -R vscode:vscode ~" }
これでdevcontainerを再作成してもClaudeのセッションが維持され、毎回認証し直す必要がなくなった。