Qiitaにログインして、便利な機能を使ってみませんか?

あなたにマッチした記事をお届けします

便利な情報をあとから読み返せます

4
1

記事を削除する

一度削除した記事は復旧できません。

この記事の編集中の下書きも削除されます。

削除してよろしいですか?

この記事は最終更新日から1年以上が経過しています。

devcontainerでClaude Codeの認証・履歴が消えるのを防ぐ設定

4
最終更新日 投稿日 2025年06月25日

はじめに

こんにちは!

devcontainer内でClaude Codeを使い始めたのですが、「コンテナをリビルドするたびに、Claudeの認証情報や会話履歴が消えてしまう」のが不便と思いはや5日。

どうもふとんです。

毎回ログインし直したり、前の会話履歴を参照できなくて不便...と感じている方もいるのではないでしょうか?

この記事では、devcontainer.jsonに簡単な設定を追記するだけで、この問題を解決し、devcontainer環境でもClaude Codeを快適に使い続けられる方法をご紹介します。

【重要】初めて設定する方へ:事前準備

今回の設定を行う前に、一つだけ重要なステップがあります。

ホストマシン(あなたのPC)でこれまで一度もClaude Codeを使ったことがない方は、devcontainerを起動する前に、ホストのターミナルで以下のコマンドを実行してください。

touch ~/.claude.json

なぜこの手順が必要か?

もしこの空ファイルが存在しない状態でコンテナを起動すると、Dockerの仕様により、mounts設定が.claude.jsonという名前のフォルダを自動で作成してしまいます。
結果として、Claude拡張機能が認証情報をファイルに書き込めず、正しく動作しなくなってしまうためです。

結論:ホストマシンと設定ファイルを共有する

結論から言うと、以下の設定をdevcontainer.jsonに追記することで、Claude Codeの認証情報と履歴をdevcontainerの外(ホストマシン)に保存し、コンテナをリビルドしても設定が維持されるようになります。

devcontainer.json
{
    // (中略) 他の設定

    "features": {
        // Claude Codeのdevcontainer Featureを有効化
        "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
    },

    // ↓↓↓ このマウント設定がポイント! ↓↓↓
    "mounts": [
        // 履歴や設定が保存されるディレクトリをマウント
        "source=${localEnv:HOME}/.claude,target=/home/vscode/.claude,type=bind,consistency=cached",
        // 認証情報が保存されるファイルをマウント
        "source=${localEnv:HOME}/.claude.json,target=/home/vscode/.claude.json,type=bind,consistency=cached"
    ],

    // (中略) 他の設定
}

※注意:
お使いのdevcontainerのユーザー名がvscodeでない場合(例:rails, nodeなど)は、targetのパスも合わせて変更してください。
target=/home/rails/.claude
target=/home/rails/.claude.json

設定のポイント解説

1. features

まず、featuresでClaude Codeのdevcontainer Featureを有効にします。これにより、コンテナ構築時にClaude Code拡張機能が自動でインストールされるようになります。

"features": {
    "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
},

2. mounts (ここが最重要!)

今回のキモとなるのが、mountsの設定です。
これは、ホストマシン(あなたのPC)のファイルやディレクトリを、コンテナ内の特定の場所に「接続(マウント)」する設定です。

"mounts": [
    "source=${localEnv:HOME}/.claude,target=/home/vscode/.claude,type=bind,consistency=cached",
    "source=${localEnv:HOME}/.claude.json,target=/home/vscode/.claude.json,type=bind,consistency=cached"
],

これにより、コンテナ内のClaude Codeが利用する設定ファイルが、実際にはホストマシンのファイルを参照・更新するようになります。コンテナ自体を削除・リビルドしても、ホストマシン上の設定ファイルは残るため、認証情報や履歴が維持されるという仕組みです。

Claudeの設定ファイルについて

マウントしている/.claudeディレクトリと/.claude.jsonファイルは、Claude Code拡張機能が設定を保存するために使用するものです。公式情報によると、それぞれ以下の役割を持っています。

  • ~/.claude/ (ディレクトリ)

    • 役割: 主に会話の履歴やキャッシュデータを保存します。
    • このディレクトリを永続化することで、過去のやり取りをコンテナをまたいで参照できるようになります。
  • ~/.claude.json (ファイル)

    • 役割: ユーザーの認証情報(APIキーなど)を保存します。
    • このファイルが永続化されることで、コンテナをリビルドするたびにログインを求められることがなくなります。

これらのファイルをホストマシンと共有することで、devcontainerの「使い捨てできる」というメリットを享受しつつ、Claude Codeの利便性を損なわない開発環境が実現できます。

まとめ

今回は、devcontainer.jsonmounts設定を追記することで、devcontainer環境でClaude Codeの認証情報と履歴を永続化する方法を紹介しました。

この設定一つで、リビルドのたびに発生していた面倒な再設定から解放され、開発がもっとスムーズになるはずです。
devcontainerとClaude Codeを愛用している方は、ぜひ試してみてください!

4
1
0

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
  3. ダークテーマを利用できます
ログインすると使える機能について
playland
スタートアップ企業の技術支援を中心に事業を展開しており、​新規事業の立ち上げやエンジニアチームの構築支援、AIを活用したサービス開発などを行っています。​

この記事は以下の記事からリンクされています

コメント

この記事にコメントはありません。

いいね以上の気持ちはコメントで

記事投稿キャンペーン開催中

4
1

記事を削除する

一度削除した記事は復旧できません。

この記事の編集中の下書きも削除されます。

削除してよろしいですか?

ログインして続ける

ソーシャルアカウントでログイン・新規登録

メールアドレスでログイン・新規登録