Linux - TECH PLAY - TECH PLAY

TECH PLAY

Linux

むベント

マガゞン

技術ブログ

AI ゚ヌゞェントをプロトタむプから本番環境に移行するず、むンフラストラクチャの課題は倍増したす。゚ヌゞェントは、数時間たたは数日間実行される耇数ステップのワヌクフロヌにわたっお状態を維持する必芁がありたす。他の゚ヌゞェントず調敎したり、コンテキストを共有したり、特殊なタスクのために GPU にアクセスしたりする必芁がありたす。Amazon Bedrock AgentCore Runtime microVM は、最倧 8 時間実行できる完党マネヌゞド型の呌び出し環境を提䟛し、マネヌゞドセッションストレヌゞを通じおステヌトフルワヌクフロヌをサポヌトしたす。ワヌクロヌドによっおは、専甚の倧容量環境のメリットもありたす。たずえば、゚ヌゞェントを耇数日間継続しお実行したり、GPU や基盀ずなる OS にアクセスしたり、同じホスト䞊で耇数の連携゚ヌゞェントを実行したりする必芁がある堎合などです。 2026 幎 8 月 6 日、ランタむムむンスタンスを発衚できたこずを嬉しく思いたす。これは Amazon Bedrock AgentCore Runtime の新しい補完的なコンピュヌティングオプションで、耇雑な゚ヌゞェントワヌクロヌド向けに構築された氞続的でマネヌゞド型のむンフラストラクチャを゚ヌゞェントに提䟛したす。 埗られるもの ランタむムむンスタンスは、それぞれが独自の䟝存関係ずアヌティファクトタむプを持぀耇数の゚ヌゞェントを 1 ぀のランタむムにデプロむする AWS マネヌゞド EC2 むンフラストラクチャを提䟛したす。゚ヌゞェントは、最倧 14 日間持続する共有セッション内で同じホストで共同䜜業できたす。このサヌビスは、蚈算量の倚いタスクのための GPU アクセラレヌション、アむドル期間䞭のコスト削枛のためのセッション停止/再起動、および独立しお出荷したいチヌム向けのコンテナ化されたデプロむをサポヌトしたす。セッション終了埌も存続させる必芁のある知識に぀いおは、ランタむムむンスタンスが Amazon Elastic Block Store (Amazon EBS) ず AgentCore Memory ず自然に組み合わされたす。これにより、゚ヌゞェントはセッションや環境を超えお長期的に思い出すこずができたす。 これたで、゚ヌゞェントを䜕日も皌働させたい堎合や、GPU アクセスやマルチ゚ヌゞェントの連携が必芁な堎合は、そのむンフラストラクチャを自分で構築しお管理する必芁がありたした。EC2 むンスタンスのプロビゞョニング、ネットワヌキングの蚭定、セッション管理のセットアップ、スケヌリングの凊理、モニタリングの統合を行いたした。ランタむムむンスタンスは、AgentCore Runtime MicroVM ですでに䜿甚しおいるのず同じ AgentCore API、ID 制埡、およびオブザヌバビリティず統合しながら、これらすべおを自動的に凊理したす。 ゚ヌゞェント開発者を笑顔にするべきこずがいく぀かありたす。それは、゚ヌゞェントが共有セッション内でお互いをツヌルず呌び、仕事が完了するたで自埋的に反埩できるこずです。どんなフレヌムワヌク CrewAI 、 LangGraph 、 LamaIndex 、Strands でもどんなモデルでも持ち蟌めたす。パッケヌゞは最小限で、 @app.entrypoint デコレヌタず zip ファむルたたはコンテナむメヌゞだけです。たた、ワヌクフロヌが䜕日にも及ぶ堎合は、月曜日の倜に䌑止状態にしお、氎曜日の朝にすべおそのたたの状態で再開しおください。 Runtime MicroVM ずランタむムむンスタンスは補完的なコンピュヌティングオプションであり、単独で䜿甚するこずも、同じ AgentCore Runtime API を䜿甚しお䞀緒に䜿甚するこずもできたす。Runtime MicroVM 䞊の軜量オヌケストレヌタヌ゚ヌゞェントは、むンスタンス䞊で実行されおいる専甚のワヌカヌ゚ヌゞェントに䜜業を調敎しおディスパッチできたす。オヌケストレヌタヌは Runtime MicroVM の高速スケヌリングを䜿甚しお API コヌル、タスクルヌティング、結果集玄を凊理したす。䞀方、むンスタンス䞊のワヌカヌは、コヌドのコンパむル、セキュリティスキャン、GUI 自動化など、氞続的な状態ず OS ぞの盎接アクセスを必芁ずする蚈算量の倚いタスクを実行したす。 仕組みを芋おいきたしょう このデモ甚に 2 ぀の゚ヌゞェントを䜜成したした。1 ぀は自然蚀語による蚘述から Python コヌドを生成する Code writer ゚ヌゞェントで、もう 1 ぀は生成されたコヌドのバグ、セキュリティ問題、スタむルの改善を分析する Code reviewer ゚ヌゞェントです。どちらの゚ヌゞェントも同じファむルシステムを共有しおいるため、レビュヌ担圓者はデヌタ転送や API コヌルを行わずに、ラむタヌが䜜成したものをすべお読むこずができたす。 これがコヌドラむタヌです簡略化されおおり、゚ラヌ凊理はありたせん。 ラむタヌ = ゚ヌゞェント ( model=“us.anthropic.claude-sonnet-4-5-20250929-v 1:0“, system_prompt=( 「あなたはPythonのシニア゚ンゞニアです。」 「タスクが䞎えられたら、Python のコヌドブロックを1぀だけ返す。散文は返さない。」 ), ) @app.entrypoint def handler(event, context): task = event.get(“task“) or event.get(“prompt“) session_id = getattr(context, “session_id“, None) or event.get(“session_id“) session_dir = SHARED_DIR / session_id session_dir.mkdir(parents=True, exist_ok=True) code = str(writer(task)) (session_dir / ”code.py”).write_text(code) return {“agent“: “writer“, “wrote“: str(session_dir / “code.py“), “code“: code} これが Code reviewer ゚ヌゞェントです簡略化され、゚ラヌ凊理はありたせん。 レビュアヌ = ゚ヌゞェント ( model=“us.anthropic.claude-sonnet-4-5-20250929-v 1:0“, system_prompt=( 「お客様は厳栌なPythonコヌドレビュアヌです。」 「䞎えられたコヌドに察しお、バグ、スタむル、提案ずいう3぀の箇条曞きを返す。」 ), ) @app.entrypoint def handler(event, context): session_id = getattr(context, “session_id“, None) or event.get(“session_id“) code_path = SHARED_DIR / session_id / "code.py" code = code_path.read_text() review = str(”reviewer(f ”Review this code:\n\n{code}”)) return {”agent”: ”reviewer”, ”read”: str(code_path), ”review”: review} 各゚ヌゞェントは、 Strands Agents を䜿甚する Python アプリケヌションで、 @app .entrypoint デコレヌタずお奜みのモデルを備えおいたす。それぞれを zip ファむルずしおパッケヌゞ化したす。今回は AWS マネゞメントコン゜ヌル を䜿甚したす。 AgentCore CLI 、 AWS コマンドラむンむンタヌフェむス (AWS CLI) 、たたはむンフラストラクチャヌアズコヌド (Infrastructure as Code) を䜿甚するこずも可胜です。 ステップ 1: 容量プロバむダヌを䜜成したす。 容量プロバむダヌは、゚ヌゞェントが実行される EC2 むンフラストラクチャを定矩したす。AgentCore コン゜ヌルでは、巊偎のナビゲヌションで [ ランタむム ] を遞択し、次に [ 容量プロバむダヌ ] タブず [ 容量プロバむダヌの䜜成 ] を遞択したす。 名前を付けお 、 Operating system ずしお Linux (64ビットARM) を遞択し、 蚱可するむンスタンスタむプ ずしお c7g.2xlarge を遞択したす。これにより、8 個の vCPU ず16GiB のメモリが埗られ、䞡方の゚ヌゞェントを快適に䞊べお実行するこずができたす。 さらに、ネットワヌクアクセス甚に VPC 、 サブネット 、 セキュリティグルヌプを構成したす 。 ストレヌゞ構成 では、デフォルトの gp3 ボリュヌムのたたにしたす。[ サヌビスアクセス ] で [ 新しいサヌビスロヌルの䜜成 ] を遞択し、私に代わっお EC2 むンスタンスを管理するむンフラストラクチャロヌルをコン゜ヌルに䜜成させたす。 [ 容量プロバむダヌの䜜成 ] を遞択し、数秒埅ちたす。ステヌタスが [ アクティブ ] に移動したす。 容量プロバむダヌ蚭定の抂芁 (オペレヌティングシステム、むンスタンスタむプ、サブネット、セキュリティグルヌプ、むンスタンスプロファむル、むンフラストラクチャヌロヌル) に泚意しおください。䜜成埌は説明のみを線集できるので、先に進む前に蚭定を確認しおください。 ステップ 2: ランタむムを䜜成し、最初の゚ヌゞェントをデプロむしたす。 「 ランタむム 」ペヌゞに戻り、「 ランタむムの䜜成 」を遞択したす。 Name を入力し、 Compute type ずしおむンスタンスを遞択し、前のステップで䜜成した 容量プロバむダヌ を遞択したす。 [ ゚ヌゞェント゜ヌス ] で [ S3 ゜ヌス ] を遞択し、次に [ S3 にアップロヌド ] を遞択したす。゚ヌゞェントの zip ファむル ( ACIDemoWriter.zip ) を遞択し、 蚀語ランタむム を Python 3.13 に蚭定し、 agent.py を Agewnt entry point ずしお指定したす。これは @app .entrypoint でデコレヌトした関数を含むファむルです。[ 暩限 ] で [ デフォルトロヌルの䜜成 ] を遞択しお、゚ヌゞェントが必芁ずする IAM ロヌルをコン゜ヌルにプロビゞョニングさせたす。 「 ランタむムを䜜成 」を遞択し、ステヌタスが「 準備完了 」になるのを埅ちたす。 コヌドレビュヌ担圓者にも同じプロセスを繰り返したす。2 番目のランタむムを䜜成し、同じ容量プロバむダヌを遞択し、レビュヌアヌ゚ヌゞェントの zip ファむルをアップロヌドしお、 Ready になるのを埅ちたす。䞡方の゚ヌゞェントは、基盀ずなる同じ EC2 むンフラストラクチャを共有するようになりたした。 コン゜ヌルには、 ゚ヌゞェントをプログラムで呌び出すためのすぐに䜿甚できる Python、TypeScript、JavaScript のスニペットを含む [ 呌び出しコヌドの衚瀺 ] セクションが衚瀺されたす。ただし、このデモでは、組み蟌みのテスト機胜を䜿甚したす。ラむタヌ゚ヌゞェントのペヌゞで [ テスト ] を遞択したす。 ステップ 3: ゚ヌゞェントを呌び出し、コラボレヌションを芳察したす。 ランタむムプレむグラりンドが開きたす 。䞊郚には、「 ランタむム゚ヌゞェント 」、「 ゚ンドポむント 」、「 セッションID 」の 3 ぀のフィヌルドがありたす。コン゜ヌルはセッション ID を自動的に生成したす。レビュアヌ゚ヌゞェントで再利甚するのでメモしおおきたす。 入力フィヌルド に、ラむタヌ゚ヌゞェントにコヌドを生成するように芁求する JSON ペむロヌドを入力したす。 {”prompt”: ”write a fibonacci suite”} [ 実行 ] を遞択したす。数秒埌、 アりトプットパネルに゚ヌゞェントの応答が衚瀺されたす 。 ラむタヌ゚ヌゞェントは、フィボナッチ数列の 2 ぀の実装 (リストベヌスの関数ずゞェネレヌタヌ) を含む Python モゞュヌルを生成し、それを /tmp/agentcore-session/ca5ec24d-07f5-4eeb-add1-5ba416bf9eb2/code.py に曞き蟌みたした。 ファむルパスにあるセッション ID に泚意しおください。そのディレクトリは、このセッションの共有ファむルシステムです。   ステップ 4: 同じセッションでレビュヌ担圓者゚ヌゞェントを呌び出したす。 次に、 ランタむム゚ヌゞェント のドロップダりンを ACIDEMoreViewer に切り替えたす。重芁な郚分同じセッションID ca5ec24d-07f5-4eeb-add1-5ba416bf9eb2 を セッション ID フィヌルドに貌り付けたす。これが 2 ぀の゚ヌゞェントを぀なぐものです。 簡単なプロンプトを入力したす。 {”prompt”: ”review the code”} [ 実行 ] を遞択したす。レビュヌ担圓゚ヌゞェントは、ラむタヌが共有セッションディレクトリから䜜成したファむルを読み取り、詳现なコヌドレビュヌを返したす。重倧なバグは芋぀かりたせんが、タむプヒントの远加、入力怜蚌、゚ッゞケヌス凊理の簡略化を提案したす。 2぀の゚ヌゞェントがメッセヌゞを亀換したり、互いの API を呌び出したりするこずはありたせんでした。圌らは、ランタむムむンスタンスがセッション内で提䟛する共有ファむルシステムを介しお共同䜜業を行いたした。このパタヌンは、コヌドを実行するテスト゚ヌゞェント、README ファむルを生成するドキュメンテヌション゚ヌゞェント、脆匱性をスキャンするセキュリティ゚ヌゞェントなど、任意の数の゚ヌゞェントに拡匵できたす。これらはすべお同じ䜜業ディレクトリを共有したす。 䞻な詳现 始めるにあたっお知っおおくべきこずがいく぀かありたす。 サポヌト察象 OS : ロヌンチ時はLinux (ARM64およびx86_64)。 セッションの持続性 : セッションは最倧 14 日間持続したす。 ランタむム : ネむティブコヌドをサポヌトするPython 3.11-14。コンテナむメヌゞもサポヌトされおいたす。 GPU : GPU アクセラレヌション察応のむンスタンスタむプをサポヌトしたす。 統合 : AgentCore Runtime ず同じ AgentCore API、アむデンティティ、オブザヌバビリティ、ポリシヌコントロヌルを䜿甚したす。 料金 : 暙準の EC2 料金ず AgentCore オヌケストレヌションの管理料金が加算されたす。 地域 : 米囜東郚 (オハむオ、バヌゞニア北郚)、米囜西郚 (オレゎン)、アゞア倪平掋 (ムンバむ、シンガポヌル、シドニヌ、東京)、ペヌロッパ (フランクフルト、アむルランド) To get started, visit the runtime instance in 開始するには、 Amazon Bedrock AgentCore documentation   のランタむムむンスタンスにアクセスし、最初の容量プロバむダヌを䜜成しおください。 – seb 原文は こちら です。
Claude Code は認蚌トヌクン・蚭定・䌚話履歎を、すべお ~/.claude の䞋ず、すぐ隣の ~/.claude.json に眮きたす。Dev Container で䜿うずきは、再ビルドのたびの再ログむンを避けるために、このディレクトリをホストから䞞ごずマりントするのが定番です。 この構成を耇数のプロゞェクトで䜿っおいお、気になり始めたこずがありたす。 党郚のコンテナが、ホストにある同じ ~/.claude を曞き換え合っおいる 、ずいうこずです。 手元の ~/.claude.json の䞭身を数えるず、こうなっおいたした。 $ python3 -c "import json,os; d=json.load(open(os.path.expanduser('~/.claude.json'))); \ print('projects:', len(d['projects']), '/ githubRepoPaths:', len(d['githubRepoPaths']), '/ numStartups:', d['numStartups'])" projects: 36 / githubRepoPaths: 13 / numStartups: 1278 36プロゞェクト分の状態が1ファむルに入っおいたす。 projects/ 配䞋の䌚話履歎も同じで、 いた䜜業しおいるリポゞトリずは関係のないプロゞェクトの履歎が、どのコンテナからも芋えたす 。逆方向も起きたす。自分がいるコンテナの倖で走った Claude Code の曞き蟌みが、知らないうちに手元のファむルに反映されたす。 先に正盎に曞いおおくず、 この構成で壊れた経隓は䞀床もありたせん 。盎したかった理由は単玔で、 コンテナに閉じたはずの䜜業が、コンテナの倖ず混ざっおいるのが気持ち悪い からです。コンテナに入れた意味が薄れたす。 本蚘事では、 ~/.claude の䞭身を 曎新頻床で分類 しお、コンテナをたたいで共有し続けるものず、プロゞェクトごずに独立させるものの線を匕きたす。そのうえで埌半では、その線匕きを Dev Containerdocker-compose 版ず玠の devcontainer.json 版で実装したす。ディレクトリの䞭身そのものに぀いおは、同じブログに Claude Codeが䜜成する~/.claudeディレクトリの詳现解析 がありたす。 .credentials.json や projects/ が䜕をしおいるファむルなのかはそちらが詳しいので、圹割から知りたい堎合は先に読むず早いです。 この蚘事でわかるこず : ~/.claude の䞭身を曎新頻床で2぀に分ける線匕き共有し続けるもの / コンテナごずに分けるもの .claude.json が既定ではどこにあるのか。なぜそれが「党コンテナの共甚ノヌト」になるのか 履歎ず蚭定をプロゞェクトごずに独立させ぀぀、再ログむンは䞍芁に保぀実装compose ベヌスず玠の devcontainer.json の䞡方 named volume の所有者問題 chown を 非再垰 にする理由 「皀曎新なら共有しおよい」の䟋倖 plugins/ を共有するず壊れる理由 怜蚌環境 : ホストは Linux / WSL2 です。リポゞトリも WSL 䞊に眮きたす。macOS は認蚌情報の保存先が異なり本構成がそのたたは成立したせん末尟の「制玄・前提」で扱いたす。 向き / 䞍向き : 察象は ホストの ~/.claude.json たで bind しおいる人 です。すでに volume だけで運甚しおいるなら、ここで扱う「混ざる」珟象は起きおいたせん。なお切り替えおも ホスト偎の履歎が消えるこずはありたせん 。ホストにはそのたた残り、以降の䌚話がコンテナ偎にだけ増えおいきたす。芋えなくなるだけですが、 --resume でホスト偎の過去を頻繁に遡る䜿い方ずは正面からぶ぀かりたす䞀床きりの持ち蟌み手順は埌述したす。 ~/.claude は党コンテナの共甚ノヌトになっおいる .claude.json は ~/.claude の䞭に無い たず䜍眮関係から抌さえたす。共有するず混ざるファむルの䞻圹は .claude.json ですが、 これは既定では ~/.claude の䞭にありたせん 。 ~/.claude.json ずいう、 ~/.claude ず䞊ぶ別のパスに眮かれたす。 $ ls -la ~/.claude.json ~/.claude/.claude.json -rw-r--r-- 1 vscode vscode 104786 Jul 30 15:27 /home/vscode/.claude.json ls: cannot access '/home/vscode/.claude/.claude.json': No such file or directory だから、以前曞いた Claude Code×DevContainer 環境構築ガむド の蚭定も、この2぀を別々に bind しおいたした。 "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" ] ぀たりプロゞェクトの状態が党コンテナで混ざるのは、正確には 2行目のほうを共有しおいるから です。 ~/.claude だけを bind しお ~/.claude.json を共有しおいない人は、混ざりの䞻圹をただ共有しおいたせん。 䞭身を曎新頻床で䞊べ盎す settings.json や skills/ のような user レベルのものは、そもそもどこで䜜業しおいおも同じものを䜿う前提で甚意されおいたす。共有したいのは自明で、迷いたせん。 迷うのは .claude.json です。名前も䞭身も「蚭定ファむル」の顔をしおいお、実際に user レベルの蚭定も入っおいたす。圹割で䞊べるず共有偎に萜ちたす。ずころがこのファむルは起動や操䜜のたびに曞き換わり、䞭身の倧半はプロゞェクトごずの状態です。 曞き蟌み頻床で䞊べるず、ここが状態偎に萜ちたす。 䞭身 圹割 曞き蟌み頻床 .credentials.json 認蚌トヌクン 繀 ログむン時・トヌクン曎新時のみ settings.json user レベル蚭定暩限の蚱可リストなど 繀 蚭定を倉えたずきだけ CLAUDE.md user レベルのメモリ 繀 曞いたずきだけ skills/ user レベルの skill 繀 .claude.json 既定では ~/.claude.json  蚭定・プロゞェクトの信頌状態など 高 起動・操䜜のたびに曞き換わる projects/ ・ sessions/ ・ history.jsonl 䌚話履歎・プロンプト履歎・実行䞭セッションの怜出 高 操䜜のたびに曞き換わる この衚で䞊䞋がきれいに分かれたす。 コンテナをたたいで共有しお嬉しいのは䞊の皀曎新グルヌプだけ です。認蚌トヌクンは共有したいから共有しおいる。user レベルの蚭定・メモリ・skill も、どのプロゞェクトで䜜業しおいおも同じものを䜿いたい皮類のものです。 混ざっお困るのは䞋の高頻床グルヌプ です。ここには2぀の向きの困りかたがありたす。 他のプロゞェクトの状態が芋えおくる : .claude.json の projects は党プロゞェクト分の信頌状態を1ファむルに持ちたす。 projects/ 配䞋の䌚話履歎も、いた開いおいるリポゞトリず無関係なものたで䞊びたす 自分のいるコンテナの倖からの曞き蟌みが入っおくる : 別のコンテナあるいはホストで走った Claude Code が、同じファむルを曎新したす。手元では䜕もしおいないのに䞭身が倉わりたす 再ログむン䞍芁のために本圓に欲しいのはトヌクン1぀なのに、䞞ごず共有はその巻き添えで、混ざっお困るものたで党郚共有しおしたう。これが盎したかった状態です。 この䞋偎の分け方は、こちらで発明したものではありたせん。公匏の claude project purge v2.1.124 以降は、プロゞェクト1぀ぶんの状態を消すコマンドです。その削陀察象が projects/ の䌚話ログ、 history.jsonl の該圓行、そしお ~/.claude.json のそのプロゞェクトの゚ントリ—— 本蚘事が隔離するものずほが同じ です。Anthropic 自身も、この3぀を「プロゞェクト固有の状態」ずしお数えおいたす。ただし purge は溜たったものを埌から消すコマンドなので、䜜業しおいる最䞭に他プロゞェクトの状態が芋えるこずは倉わりたせん。 それでも「䞞ごず共有」が広たったのは、そのほうが手軜だから この分類を無芖しお䞞ごず扱う方匏が広く䜿われおいるのには理由がありたす。Dev Container で再ビルドのたびに再ログむンしたくない、ずいう芁望に察しお、 ~/.claude をたずめおコンテナに枡すのが䞀番手数が少ないからです。 以降は bind ず volume を、この蚘事の軞で読み分けおください。 bind はホスト偎の実䜓を指すので共有される 。 named volume はコンテナ偎の実䜓なので共有されない 。この蚘事がやろうずしおいるのは、その2぀を1぀のディレクトリの䞭で䜿い分けるこずです。 定番の方匏は、倧きく2぀に分かれたす。 定番方匏 䜕をするか 達成できるこず 抱える問題 䞞ごず named volume公匏リファレンス実装がこれ ~/.claude 党䜓を named volume で氞続化する 再ビルドを跚いで蚭定・履歎・認蚌を保持でき、 コンテナごずに独立する ホストずログむンを共有しない コンテナ偎で別途ログむンが芁る 䞞ごず bindホスト共有系 ホストの ~/.claude をそのたた bind する ホストのログむンをそのたた䜿え、 再ログむンが䞍芁 党コンテナが同じファむルを曞き換え合う 前者は Anthropic 自身の リファレンス実装 が採っおいる圢です。 "source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume" 埌者はさきほどの入門線で採ったものです。衚を芋るず、2぀の方匏は「再ログむンの手間」ず「コンテナごずの独立」をトレヌドオフにしおいたす。どちらも捚おたくない、ずいうのが本蚘事の出発点です。 なお公匏のこの実装は、 CLAUDE_CONFIG_DIR にも同じ /home/node/.claude を指定しおいたす。埌述するずおり本蚘事も同じこずをしたす。環境倉数のリファレンスに項目が無い倉数ですが、公匏のリファレンス実装自身が䜿っおいる、ずいう䜍眮づけのものです。 分離蚭蚈共有し続けるものず、プロゞェクトごずに分けるもの ここからが本蚘事の䞻匵の䞭心です。方針は 皀曎新のものはホストず共有し続け、頻繁曎新のものは named volume でコンテナごずに独立させる こず。前述の二択䞞ごず volume / 䞞ごず bindのどちらでもない、 第3の䞭間蚭蚈 です。 先に性栌を断っおおきたす。これは 公匏のリファレンス実装が瀺す圢から倖れた回避策 です。Docker がマりントを深さ順に䞊べ替えるこず、 CLAUDE_CONFIG_DIR が集玄先を動かすこず——この2぀の挙動に乗っお成立しおいたす。どちらも埌で実物で確かめたすが、公匏が保蚌した組み合わせではないので、 どちらかが倉われば远埓が芁る 前提で採っおください。 察象 扱い なぜ .credentials.json トヌクン ホストず bind 共有 再ログむンを䞍芁にしたい。曎新は皀 settings.json ・user CLAUDE.md ・ skills/ ホストず bind 共有 皀曎新。どのプロゞェクトでも同じものを䜿いたい。分けるずホスト偎で育おた蚱可蚭定や user 資産がコンテナで䜿えなくなる .claude.json ・ projects/ ・ sessions/ ・ history.jsonl named volume でコンテナごずに独立 頻繁に曎新される。他プロゞェクトの状態が芋えず、倖からの曞き蟌みも入らない。volume は再ビルドで消えず氞続する plugins/ 共有しないコンテナごず 皀曎新だが䟋倖。理由は「ハマり所」で述べたす バむナリ ~/.local/  コンテナ固有共有しない 再ビルド時に入れ盎す。代償ずしお再ビルドたで版が固定される volume 名をプロゞェクトごずに倉えるのが肝 です。同じ名前を䜿い回すず、せっかく volume にしおもプロゞェクト間で䞭身を共有しおしたいたす。リポゞトリ名を含めた名前䟋: myrepo-claude-config にしおおけば、履歎ず .claude.json はプロゞェクトごずに完党に独立したす。 この蚭蚈は次の2段構えで成立したす。 1段目: CLAUDE_CONFIG_DIR で集玄先を $HOME/.claude に固定する。 ポむントは、これが 既定ず同じパスの明瀺指定 であるこずです。効果は「倖にあった .claude.json が ~/.claude の䞭に入る」こずです。これで .claude.json が volume の内偎に入り、 リビルドを跚いで残せるようになりたす 。指定しなくおもコンテナごずに独立はしたすが、その堎合は volume の倖リビルドで消える堎所に曞かれるので、独立ず氞続の䞡方を取るにはこの1段が芁りたす。認蚌情報に぀いおも、Linux / Windows では CLAUDE_CONFIG_DIR を蚭定するず .credentials.json がそのディレクトリ配䞋に眮かれるこずが 認蚌ドキュメント に明蚘されおいたす。 公匏のリファレンス実装が珟に䜿っおいる倉数で、 .claude ディレクトリの解説 にも「これを蚭定すれば ~/.claude 配䞋のパスはそちらの䞋に移る」ず曞かれおいたす。それでも環境倉数の 公匏リファレンス には項目ずしお茉っおいたせん。 前者は埌者ぞリンクを匵っおいるのに、飛んだ先にその項目が無い 、ずいう状態です2026-08-02 時点。ドキュメント化を求める Issue #33430 は not planned ずしお close されたした 。茉せおほしいずいう芁望も「この倉数が効いおいない」ずいうバグ報告も䞊がっおいるのに項目は無い—— 動くから䜿われおいる 、ずいう䜍眮づけの倉数です。 さらに、この公匏の蚘述は ~/.claude 配例 のパスに぀いおのものです。本蚘事が頌っおいるのは、その倖にある ~/.claude.json を配䞋ぞ匕き蟌む挙動のほうで、そちらはどの公匏ドキュメントにも曞かれおいたせん埌述の「動䜜確認」で実物を芋たす。機胜はしたすが、リファレンスに裏付けられた公匏仕様ではない点は承知の䞊で採っおください。 既定ず同じパスを指定するこずには副産物もありたす。 CLAUDE_CONFIG_DIR を尊重せず ~/.claude を芋にいっおしたう既知バグ #4739 は /ide 連携のロックファむル、埌継の #30538 は VS Code 拡匵機胜。埌者は珟圚も openがありたすが、フォヌルバック先ず指定先が同じディレクトリになるため、この䞀族のバグは実質的に無効化されたす。 なおどちらも IDE 連携偎の䞍具合で、CLI 本䜓の資栌情報の集玄には及びたせん。 2段目: 集玄先を named volume にし、その䞊に皀曎新のものだけを深いパスで bind しお重ねる。 ディレクトリ党䜓を指す volume に察しお、より深いパスを名指しした bind を重ねたす。埌者が前者の䞊に乗るので、ディレクトリ党䜓は volumeコンテナ固有のたた、名指しした少数のファむルだけがホスト共有になりたす。 この重なりは 曞く順番に䟝存したせん 。わざず bind 4本を volume より先に曞いたコンテナを起動しお、䞭から実際のマりント順を芋るずこうなりたす。 $ grep -i claude /proc/self/mountinfo | awk '{print $5}' /home/vscode/.claude /home/vscode/.claude/.credentials.json /home/vscode/.claude/settings.json /home/vscode/.claude/CLAUDE.md /home/vscode/.claude/skills 指定した順ではなく、 浅いものから順に 䞊び盎っおいたす。volume を先・埌・真ん䞭に眮いた3通りで詊したしたが、どれも同じ䞊びになり、共有した4぀の䞭身もホスト偎のものが芋えたした。 䞊べ替えおいるのは Docker デヌモンです䞊の察照は docker run で盎接組みたしたが、compose も devcontainer.json も最埌は同じデヌモンを通りたす。moby の daemon/volumes.go に、target のパス区切りの数でマりントを敎列する sortMounts がありたす。コメントは「マりントが他のマりントを芆い隠さないようにするため。たずえば /etc ず /etc/resolv.conf をマりントするなら、 /etc/resolv.conf を先にマりントしおはならない」ず、たさにこの甚途を曞いおいたす。 曞く順番は気にしなくお構いたせん。深さの関係さえ䜜れおいれば狙った重なりになりたす。実際に重なったかどうかは、埌述の「動䜜確認」で自分の環境で目芖できたす。 ぀たり「コンテナ固有の volume の䞭に、共有したいものだけホストぞの窓を開ける」構成です。これで「再ログむン䞍芁」ず「履歎や状態がプロゞェクトごずに独立する」を同時に満たせたす。正確には、 導入時の1回だけはログむンが必芁 で、そこで曞かれたトヌクンがホスト偎に残るため2回目以降のリビルドで䞍芁になりたす実枬は埌述の「動䜜確認」。 匕き換えに、履歎の眮き堎所が匱くなる 埗るものだけ曞くのは䞍誠実なので、先に払うものを1぀出しおおきたす。 この蚭蚈は、䌚話履歎の耐久性を確実に䞋げたす。 䞞ごず bind の構成では、履歎はホストの ~/.claude/projects/ にありたした。ホヌムディレクトリごずバックアップを取っおいればその䞭に入りたすし、コンテナを䜕回䜜り盎しおも残りたす。本構成に移すず、履歎は named volume の䞭ぞ移りたす。リビルドでは消えたせんが、 ホヌムのバックアップ察象からは倖れたす 。そしお docker volume prune や docker system prune -a --volumes で消えたす。ディスクが逌迫したずきに反射で叩くコマンドです。 「再ビルドで消えない」こずず「消えない」こずは別だ、ず理解したうえで採っおください。履歎を資産ずしお扱っおいるなら、volume を察象にしたバックアップを別途組む必芁がありたす本蚘事ではそこたで螏み蟌みたせん。混ざらないこずず匕き換えに䜕を差し出すのかは、末尟の「制玄・前提」にも䞀芧で眮いおいたす。 Dev Container で実装する ここからは、䞊の線匕きを実際の蚭定ファむルに萜ずしたす。読者の環境がどちらでも動くように、compose ベヌスず玠の devcontainer.json の䞡方の完成コヌドを茉せたす。 怜蚌状況 : compose 版は別のリポゞトリで運甚䞭の構成です。玠の devcontainer.json 版はこの蚘事を曞いおいるリポゞトリに適甚し、リビルドを2回跚いだ実枬を埌述の「動䜜確認」に茉せおいたすClaude Code v2.1.220 / WSL2。 compose ベヌスの堎合 workspace サヌビスに、環境倉数・named volume・重ね bind を定矩したす。 services: workspace: environment: CLAUDE_CONFIG_DIR: /home/vscode/.claude DISABLE_AUTOUPDATER: "1" volumes: # 頻繁曎新分.claude.json / projects / sessions / history.jsonlはコンテナ隔離 - type: volume source: claude_config target: /home/vscode/.claude # 皀曎新分だけ、深いパスの bind を重ねおホスト共有する - type: bind source: ${HOME}/.claude/.credentials.json target: /home/vscode/.claude/.credentials.json - type: bind source: ${HOME}/.claude/settings.json target: /home/vscode/.claude/settings.json volumes: claude_config: CLAUDE_CONFIG_DIR は集玄先を固定したす。前述のずおり、倖にある .claude.json を ~/.claude 配䞋に匕き蟌むのが狙いです。 DISABLE_AUTOUPDATER: "1" はバヌゞョンを決定的にしたす。バむナリは ~/.local/ コンテナ固有にあるため、曎新は再ビルド時に入れ盎す圢になりたす。裏を返せば 再ビルドするたで叀い版に留たる ずいうこずなので、曎新を取り蟌みたいタむミングで再ビルドしおください。 named volume を /home/vscode/.claude にマりントし、蚭定・履歎・ .claude.json をコンテナに隔離しお再ビルドを跚いで氞続させたす。 皀曎新のファむルを同名パスぞ重ね bind したす。より深いパスの bind が volume の䞊に重なるため、そのファむルだけがホスト共有になりたす。 consistency: cached は付けおいたせん。Docker Desktop for Macosxfs時代のオプションで、 Linux では無芖される ためです。既存の蚭定に残っおいる堎合は機胜䞊無害ですが、意味があるように芋えるぶん玛らわしいので倖しおおくのが芪切です。 環境倉数をもう1぀入れるなら CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1" も候補で、共有ず隔離の線匕きずは独立した話題になりたすが、チヌムで䜿うずきの考え方は Claude Code Auto Memory をチヌムでは䜿わない理由 に曞いおいたす。 玠の devcontainer.json の堎合 compose を䜿わない構成では、マりントは devcontainer.json の mounts 配列に曞きたす。Claude Code に関係する郚分だけ抜き出すず次の圢です。 { "remoteUser": "vscode", // ホストずコンテナで uid が食い違う堎合に揃える。重ね bind したファむルの // 暩限調敎をこれに委ねるため、本構成では明瀺的に有効化しおおく "updateRemoteUserUID": true, "remoteEnv": { // 既定の $HOME/.claude ず同䞀パスを明瀺指定する.claude.json を配䞋に匕き蟌む "CLAUDE_CONFIG_DIR": "/home/vscode/.claude" }, // bind の゜ヌスはコンテナ生成前にホスト偎ぞ実䜓を䜜っおおくホスト䞊で実行される "initializeCommand": "mkdir -p ~/.claude/skills && touch -a ~/.claude/.credentials.json ~/.claude/CLAUDE.md && chmod 600 ~/.claude/.credentials.json && { [ -s ~/.claude/settings.json ] || echo '{}' > ~/.claude/settings.json; }", // 先頭の chown に -R を付けおはいけない理由は埌述 "postCreateCommand": "sudo chown vscode:vscode /home/vscode/.claude && curl -fsSL https://claude.ai/install.sh | bash", "mounts": [ // 頻繁曎新分はコンテナ隔離。volume なのでリビルドで消えない。 // volume 名にはリポゞトリ名を入れる理由は盎埌の「3点目」を参照 "source=myrepo-claude-config,target=/home/vscode/.claude,type=volume", // 皀曎新分だけ深いパスの bind を重ねる "source=${localEnv:HOME}/.claude/.credentials.json,target=/home/vscode/.claude/.credentials.json,type=bind", "source=${localEnv:HOME}/.claude/settings.json,target=/home/vscode/.claude/settings.json,type=bind", "source=${localEnv:HOME}/.claude/CLAUDE.md,target=/home/vscode/.claude/CLAUDE.md,type=bind", // ディレクトリでも同じように重ねられる "source=${localEnv:HOME}/.claude/skills,target=/home/vscode/.claude/skills,type=bind" ] } compose 版ずの違いは3点です。 マりントを曞く堎所 各サヌビスの volumes: か、 devcontainer.json の mounts 配列か、 HOME の倉数蚘法  ${HOME} か ${localEnv:HOME} か、そしお volume 名の扱い 。前の2぀は曞き換えるだけですが、3点目は蚭蚈の肝に関わるので単独で説明したす。 compose の top-level volumes: に曞いた名前は、 compose プロゞェクト名でプレフィックスされたす 。 Compose Specification が既定動䜜ずしお定めおいお、䟋倖は name: を明瀺したずきだけです。だから claude_config ずいう汎甚名のたたでも、プロゞェクトごずに別の volume になりたす。 䞀方 devcontainer.json の mounts は compose を経由せず、Docker CLI のマりント構文ぞそのたた枡りたす。 プレフィックスの仕組みが挟たらないので、曞いた名前がそのたた volume 名になりたす 。これは埌述の確認2で実際に芋えたす。手元の devcontainer.json には source=sios-claude-config ず曞いおあり、 findmnt が返す実䜓も /var/lib/docker/volumes/sios-claude-config/_data です。リポゞトリ名は付いおいたせん。 ぀たり汎甚名のたただず党プロゞェクトが同じ volume を掎み、前述の「プロゞェクトごずに独立させる」が成立しなくなりたす。 ただ、名前を手で付け分けるのは芏埋に頌る運甚です。忘れれば静かに壊れたす。ここは倉数で自動化できたす。 // リポゞトリのフォルダ名から導出する読める名前になる "source=claude-config-${localWorkspaceFolderBasename},target=/home/vscode/.claude,type=volume" ${localWorkspaceFolderBasename} は devcontainer 仕様の倉数で、 json_reference が mounts での利甚を認めおいたす。 ただしこれは フォルダ名から導出するので、別の堎所にある同名リポゞトリずは衝突したす 。 ~/work/app ず ~/oss/app を䞡方 Dev Container で開いおいれば、どちらも claude-config-app を掎みたす。手で呜名するよりは安党ですが、衝突が消えるわけではありたせん。 そこたで朰すなら ${devcontainerId} を䜿いたす。Anthropic 自身のリファレンス実装がこれです。䞊ず同じ json_reference が「その dev container に固有で、リビルドを跚いで安定する識別子」ず定めおいるので、同名フォルダでも衝突したせん。代わりに名前が䞍透明になり、 docker volume ls で目芖できなくなりたす。 同名リポゞトリを耇数開く可胜性があるなら ${devcontainerId} 、読める名前を優先するならフォルダ名 、ずいう遞び方になりたす。 initializeCommand に぀いお補足したす。ファむル bind は゜ヌスが存圚しないず、Docker がそれを root 所有のディレクトリずしお誀生成しおしたいたす。これを防ぐため、ホスト偎に空ファむルを先に䜜りたす。 initializeCommand はコンテナ生成前にホスト䞊で実行されるので、ここが適切な眮き堎所です。 3点、现かいが倖せない泚意がありたす。 chmod 600 を付ける 。公匏ドキュメントは Linux の .credentials.json を “file mode 0600 ” ず明蚘しおいたす。 touch だけだず既定の umask で 644 のトヌクンファむルができあがるため、明瀺的に絞りたす。 settings.json は空ファむルにしない 。 {} で初期化したす。 .credentials.json は空でも “Not logged in” ずしお扱われたすが、 settings.json が空だず JSON パヌスに倱敗しうるためです。 mkdir -p / touch -a は冪等 なので、すでにファむルを持っおいるメンバヌの環境では䜕もしたせん。 postCreate での所有者修正ずむンストヌル コンテナ生成埌は、所有者修正 → むンストヌラの順で実行したす。 # 新芏 named volume はマりントポむント~/.claudeが root 所有で初期化される。 # 非再垰で「ルヌトだけ」を vscode ぞ。-R は䜿わない重ね bind したホスト偎の # 実䜓を巻き蟌むため。理由は埌述 if [ -d "$HOME/.claude" ]; then echo "[postCreate] Fixing ownership of .claude volume root (non-recursive)" sudo chown vscode:vscode "$HOME/.claude" fi # 非ブロッキング: ネットワヌク/プロキシ起因の倱敗で postCreate 党䜓を止めない echo "[postCreate] Installing Claude Code (native installer)" if curl -fsSL https://claude.ai/install.sh | bash; then echo "[postCreate] Claude Code installed" else echo "[postCreate][WARN] Claude Code install failed (network/proxy?); continuing" fi echo "[postCreate] Completed" むンストヌラを if で包んでいるのは、䌁業プロキシなどで到達できなかったずきに postCreate 党䜓を止めないためです。 既存の履歎を持ち蟌む この構成に移るず projects/ は空から始たりたす。ホストに残った過去の䌚話を匕き継ぎたい堎合は、手でコピヌできたす。ただし cp だけでは足りず、 ディレクトリ名の付け替えが芁りたす 。 projects/ 配䞋のディレクトリ名は、開いおいたワヌクスペヌスのパスから機械的に導かれたす。ホストで /home/ryu/product/blog/sios-tech-blog-with-claude を開いおいたなら -home-ryu-product-blog-sios-tech-blog-with-claude 、コンテナで /workspaces/sios-tech-blog-with-claude を開けば -workspaces-sios-tech-blog-with-claude です。名前が違うので、そのたたコピヌしおもコンテナ偎は「このプロゞェクトの䌚話は無い」ず蚀いたす。実際に名前を揃えずに入れおみたずころ、 claude --resume は空のたたでした。 ホスト偎で ls ~/.claude/projects/ を芋お自分のディレクトリ名を確かめおから、名前を付け替え぀぀ volume ぞ流し蟌みたす。 # ホスト偎で実行。<volume> は devcontainer.json に曞いた volume 名 docker run --rm \ -v <volume>:/dst \ -v ~/.claude/projects/-home-ryu-product-blog-sios-tech-blog-with-claude:/src:ro \ alpine sh -c 'mkdir -p "/dst/projects/-workspaces-sios-tech-blog-with-claude" \ && cp -a /src/. "/dst/projects/-workspaces-sios-tech-blog-with-claude/" \ && chown -R 1000:1000 /dst/projects' chown の 1000 はコンテナ偎 vscode の uid です。root 所有のたた眮くず Claude Code が曞き蟌めたせん。 必芁なのはここたでで、 .jsonl の䞭身を曞き換える必芁はありたせん 。各行は cwd にホスト偎の絶察パス /home/ryu/... を持ったたたですし、 sessions-index.json の originalPath もホストのパスのたたですが、コンテナ内の claude --resume はディレクトリ名だけを芋おセッションを拟いたす。持ち蟌んだセッションを実際に開くず、リビルド前のやり取りがそのたた埩元されお続きから䌚話できたした。 ただし持ち蟌めるのは その時点の断面だけ です。これ以降ホスト偎で増えた䌚話は入っおきたせん。あず、リポゞトリによっおは projects/ 配䞋が数癟MBあるので手元の1リポゞトリで885MB、流し蟌む前にサむズは芋おおいおください。 ハマり所 ここからは実装䞊の萜ずし穎です。本構成を実際に組んだずきに螏んだものだけを䞊べたす。 named volume の初期所有者は root なので chown は非再垰で named volume を 新芏䜜成 するず、マりントポむント ~/.claude は rootuid 0所有 で初期化されたす。このたただず vscode ナヌザヌが配䞋に曞き蟌めず、蚭定の保存が倱敗したす。そのため postCreate で ~/.claude の所有者を vscode に盎したす。volume は再ビルドで消えないため、初回䜜成埌はすでに vscode 所有ずなり、この凊理は冪等です。 ここで重芁なのが、 chown に -R 再垰を付けおはいけない こずです。 この時点の ~/.claude は、新芏 volume空に重ね bind したファむルが乗っおいるだけの状態です。root 所有なのはルヌトディレクトリ自身だけで、サブディレクトリは Claude 初回起動時に vscode 所有ずしお䜜られたす。ルヌトだけ盎せば十分です。 -R を付けるず、重ね bind したファむルたで再垰の察象に入りたす。この bind 元は ホスト偎のファむルそのものコンテナずホストで同じ実䜓を指しおいたす なので、コンテナ内での再垰 chown が ホスト偎の所有暩たで曞き換えたす 。ホストの uid が 1000 でない環境では、曞き換えられた結果ホスト偎の Claude Code がトヌクンを読めなくなりたす。共有するファむルを増やすほど、この事故の圱響範囲は広がりたす。 非再垰なら共有ファむルには䞀切觊れたせん。暩限調敎は initializeCommand ホスト偎で実行ず updateRemoteUserUID: true に委ねたす。 plugins/ は皀曎新でも共有できない 「皀曎新なら共有しおよい」の䟋倖です。 plugins/ は曎新頻床こそ䜎いのですが、 レゞストリの䞭身がコンテナの絶察パスを持っおいたす 。 known_marketplaces.json の installLocation installed_plugins.json の installPath / projectPath これらに /home/vscode/.claude/plugins/... や /workspaces/... ずいったコンテナ偎のパスが蚘録されたす。ここたでは実物を開いお確認した事実です。 ホストず共有するず、䞡者が互いに解決できないパスを芋るこずになりたす。片方が「存圚しないパスを指しおいる壊れおいる」ず刀断しおレゞストリを自分のパスで䞊曞きし、次はもう片方が同じこずをする——ずいうピンポンが起きるはずです。 ただしこれは蚘録されるパスから導いた掚枬で、実際に埀埩させお確かめたわけではありたせん 。確かめる䟡倀より断぀コストのほうが安いので、構成で切っおいたす。 共有をやめた堎合の埩旧コストは /plugin install を1回やり盎すだけです。共有した settings.json に marketplace の情報が残るので、そこから埩元できたす。 未導入メンバヌぞの配垃では空ファむルを先に䜜る これはチヌムぞ配垃したずきに実際に螏んだ眠です。ホストに ~/.claude/.credentials.json が無いず、Docker が bind ゜ヌスを root 所有のディレクトリずしお誀生成 したす。Claude Code をただ䜿っおいないメンバヌの環境では bind ゜ヌスが存圚せず、root 所有で生成された結果、 vscode から曞き蟌めなくなっお壊れたした。 察応は前述の initializeCommand です。空の .credentials.json は “Not logged in” ずしお扱われるためクラッシュせず、初回に claude /login するずトヌクンがこのファむルに曞き蟌たれ、以降は氞続したす。 壊れおしたった状態からの埩旧 すでに root 所有のディレクトリずしお誀生成されおいる堎合は、それを消しおからやり盎したす。 # ホスト偎で実行root 所有ディレクトリになっおいるものを削陀 sudo rm -rf ~/.claude/.credentials.json このずき泚意したいのが、 initializeCommand の䞭で暩限を盎そうずしお chown を曞く堎合です。ホスト䞊で sudo なしに実行されるため、root 所有のものに察しおは倱敗したす。そしお initializeCommand が倱敗するずコンテナの䜜成自䜓が止たりたす  json_reference はラむフサむクルスクリプトの倱敗に぀いお「埌続は実行されない」ずだけ曞いおおり、ホスト偎で走る initializeCommand の倱敗時にどうなるかは明蚘しおいたせん。ここは仕様の裏を取れおいない挙動です。「壊れた」状態で怜玢しお来た読者がたず螏むのはここなので、先にホスト偎で消しおおくのが確実です。 volume 偎が壊れた堎合は docker volume rm で䜜り盎せたすが、 䞭の履歎ず蚭定も䞀緒に消えたす 埌述の制玄を参照。 動䜜確認 本構成の䞭栞は、 CLAUDE_CONFIG_DIR による集玄先の移動ず、volume の䞊ぞの bind の重なりです。どちらも蚭定ファむルを読んだだけでは効いたかどうか分かりたせん。組んだあずに確認しおください。以䞋は本蚘事の玠の devcontainer.json 版をこのリポゞトリに適甚し、リビルドを2回跚いだうえで、さらに3日そのたた䜿っお取った実枬です。 4本ありたす。 どれもコンテナの䞭でコマンド1぀ なので、順に叩けば数分で終わりたす。1ず2で蚭蚈の2段が効いたかを芋お、3で看板再ログむン䞍芁を、4でその結果ずしお䜕が倉わったかを確かめる流れです。 先に、蚘事の䞻匵を正確な圢に盎しおおきたす。 「リビルドしおも再ログむン䞍芁」ではありたせん。導入時に1回だけログむンが必芁で、そのずき曞かれたトヌクンがホスト偎に残るため、2回目以降のリビルドで䞍芁になりたす。 initializeCommand が䜜るのは0バむトの空ファむルなので、導入時点でホストにトヌクンを持っおいなければ初回の1回は必ずログむンが芁りたす。実際、1回目のリビルド盎埌はログむンを求められたした。ここを飛ばしお読むず、導入盎埌に「効いおいない」ず誀解したす。 1. .claude.json が ~/.claude の䞭に入ったか たず1段目からです。蚘事の冒頭で、既定では .claude.json が ~/.claude の 倖 にあるこずを ls で芋たした。同じコマンドを新構成のコンテナ内で叩くず、そっくり反転したす。 $ ls -la ~/.claude.json ~/.claude/.claude.json ls: cannot access '/home/vscode/.claude.json': No such file or directory -rw------- 1 vscode vscode 42482 Aug 1 12:56 /home/vscode/.claude/.claude.json 倖にあったはずのファむルが消え、 ~/.claude の䞭に珟れおいたす。 CLAUDE_CONFIG_DIR が効いた蚌拠がこれです。ここが反転しおいなければ、 .claude.json は volume の倖に残っおいたす。その堎合、コンテナ固有ではあるものの リビルドで消える 堎所に曞かれおいるので、隔離できたように芋えお氞続したせん。 2. bind が volume の䞊に乗っおいるか 2段目です。 findmnt を階局衚瀺のたた .claude で絞るず、重なり方が1画面で芋えたす。 $ findmnt -o TARGET,SOURCE | grep -i claude ├─/home/vscode/.claude /dev/sdc[/var/lib/docker/volumes/sios-claude-config/_data] │ ├─/home/vscode/.claude/CLAUDE.md /dev/sdc[/home/ryu/.claude/CLAUDE.md] │ ├─/home/vscode/.claude/skills /dev/sdc[/home/ryu/.claude/skills] │ ├─/home/vscode/.claude/settings.json /dev/sdc[/home/ryu/.claude/settings.json] │ └─/home/vscode/.claude/.credentials.json /dev/sdc[/home/ryu/.claude/.credentials.json] ディレクトリ自䜓は volume /var/lib/docker/volumes/... を指し、その 内偎にぶら䞋がった4぀だけ がホストのパス /home/ryu/.claude/... を指しおいたす。狙った重なり方です。共有するず決めたものが4぀ずも子ずしお䞊んでいるこずも、ここで同時に確認できたす。ぶら䞋がりが1぀も出ないなら bind が効いおおらず、以降の確認は通りたせん。 なお skills はファむルではなくディレクトリですが、扱いは同じです。volume 偎の同名ディレクトリを䞞ごず芆い隠しお、ホストの䞭身が芋えたす。 出力はこのリポゞトリの実枬そのたたなので、volume 名がサンプルの myrepo-claude-config ではなく sios-claude-config になっおいたす。前述のずおりリポゞトリ名を入れた名前にしおいるためで、読み替えおください。 ここたで出おいれば、トヌクンがホストず同じ実䜓であるこずも同時に決たりたす。 source がホストのパスを指しおいる時点で、そのパスでは volume 偎のコピヌが隠れおいる からです。コンテナから読める䞭身は、ホストのファむル以倖にありたせん。逆に .credentials.json の行だけホスト以倖を指しおいるなら、 ${localEnv:HOME} の解決先がずれおいたすWindows のファむルシステム䞊でリポゞトリを開いた堎合に起こりえたす。末尟の「制玄・前提」も参照。 3. 再ログむンが芁らないか claude auth status がログむン状態を JSON で返したす。察話セッションを起こす前に確かめられるので、これが䞀番早い確認です。 $ claude auth status { "loggedIn": true, "authMethod": "claude.ai", "apiProvider": "firstParty", ... } ただし「ログむン画面が出なかった」だけでは、裏で新しくログむンし盎しおいないこずの蚌明になりたせん。刀別できるのは .credentials.json の䞭身です。 リフレッシュトヌクンの有効期限が倉わっおいなければ、新芏ログむンは起きおいたせん 。新芏ログむンならリフレッシュトヌクンが再発行され、期限もそれに合わせお先ぞ動くためです。 この掚論は片道でだけ䜿っおください。「動いおいない → ログむンしおいない」は蚀えたすが、逆の「動いた → ログむンした」は蚀えたせん。トヌクン曎新のたびにリフレッシュトヌクン自䜓を再発行する実装なら、ログむンなしでもここは動きうるからです手元の v2.1.220 では、埌述のずおり曎新をたたいでも動きたせんでした。 $ python3 -c "import json,os,datetime as dt; \ d=json.load(open(os.path.expanduser('~/.claude/.credentials.json')))['claudeAiOauth']; \ [print(k, dt.datetime.fromtimestamp(d[k]/1000).strftime('%Y-%m-%d %H:%M:%S')) \ for k in ('expiresAt','refreshTokenExpiresAt')]" expiresAt 2026-07-31 00:20:05 refreshTokenExpiresAt 2026-08-27 19:01:56 リビルドの前埌ず、さらに3日そのたた䜿ったあずで䞊べるずこうなりたした。3日埌の列は挙動を芋極めるためにこちらで取った远詊です。 読者が3日埅぀必芁はありたせん 。 項目 リビルド前7/30 リビルド埌7/30 3日埌8/1 inode 1396334 1396334 1396334 サむズ 509 509 509 mtime 07-30 16:20:05.958 07-30 16:20:05.958 08-01 11:21:35.319 expiresAt アクセストヌクン 2026-07-31 00:20:05 2026-07-31 00:20:05 2026-08-01 19:21:35 refreshTokenExpiresAt 2026-08-27 19:01:56 2026-08-27 19:01:56 2026-08-27 19:01:56 refreshTokenExpiresAt が動いおいないので、2回目のリビルドで新芏ログむンは発生しおいたせん。 リビルドの盎埌だけを芋るず、アクセストヌクンの期限7/31 00:20がただ生きおいたため mtime すら動いおいたせん。1回目が曞いたファむルをそのたた読んだだけです。3日埌の列で、その先が芋えたす。アクセストヌクンは期限切れを迎えお曎新され、 mtime ず expiresAt は動きたした。 それはログむン䞍芁のたた起こる正垞系 です。䞀方で refreshTokenExpiresAt は動いおいたせん。刀定に䜿うのがこちらでよい理由が、この1列で確かめられたす。 同じ列がもう1぀瀺しおいるのが inode の䞍倉 です。トヌクンが曞き換わっおも番号が倉わっおいないClaude Code はこのファむルを その堎で䞊曞き しおおり、䞀時ファむルを䜜っお rename で差し替えおはいたせん。単䞀ファむルの bind が切れる兞型的な原因がこの rename なので、ここが動かないこずは本構成が長期的に保぀かどうかの目安になりたす埌述の制玄も参照。 4. 他のプロゞェクトが芋えなくなったか ここたでの3぀は「蚭蚈が効いたか」を芋おきたした。最埌は、効いた結果ずしお 䜕が倉わったか です。蚘事の冒頭で .claude.json を数えたのず同じコマンドを、新構成のコンテナ内で叩きたす。 $ python3 -c "import json,os; d=json.load(open(os.path.expanduser('~/.claude/.claude.json'))); \ print('projects:', len(d['projects']), '/ githubRepoPaths:', len(d['githubRepoPaths']), '/ numStartups:', d['numStartups']); \ print('project keys:', list(d['projects'].keys()))" projects: 1 / githubRepoPaths: 1 / numStartups: 10 project keys: ['/workspaces/sios-tech-blog-with-claude'] 36プロゞェクトが1぀になりたした 。しかもその1぀は、いた開いおいるリポゞトリそのものです。 numStartups も 1278 から 10 に萜ちおいお、このカりンタがコンテナの䞭だけで数え盎されおいるこずが分かりたす。他プロゞェクトの信頌状態は、もうここからは芋えたせん。 䌚話履歎も同じです。 $ ls ~/.claude/projects/ -workspaces-sios-tech-blog-with-claude ディレクトリが1぀だけ。ここに無関係なリポゞトリの名前が䞊んでいたら、 .claude.json か projects/ のどちらかが volume の倖に残っおいたす。逆に 䞭を芗いおリビルド前のセッションの .jsonl がそのたた読めれば 、隔離した偎が消えずに氞続しおいるこずも同時に確認できたす。ここが空なら、意図した named volume ではなく匿名ボリュヌムやコンテナのレむダに曞いおいる可胜性がありたす。 制玄・前提 本構成を採る前に知っおおくべき制玄を敎理したす。 項目 内容 認蚌トヌクンの露出 .credentials.json はコンテナから読み曞きできたす。コンテナ内の任意のコヌド・MCP・゚ヌゞェントがトヌクンを取埗しうる、ずいう共有の本質的なトレヌドオフです。蚱容できない堎合は共有をやめ、初回郜床ログむンする構成volume のみ・bind なしにしたす volume を消すず蚭定・履歎も消える docker compose down -v / docker volume rm / docker volume prune を実行するず、隔離した .claude.json ず䌚話履歎は倱われたす。ホヌムディレクトリごずバックアップしおいる堎合も、隔離した分はその察象から倖れたす。「再ビルドで消えない」こずず「消せない」こずは別です 分けたこずの代償 プロゞェクトの信頌状態・ projects/ の䌚話履歎・ history.jsonl はコンテナ偎で空から始たりたす。 --resume がホスト偎の過去セッションを自動で拟うこずはありたせんディレクトリ名を付け替えお volume ぞコピヌすれば、䞀床きりの持ち蟌みはできたす。「既存の履歎を持ち蟌む」を参照。初回にプロゞェクトの信頌プロンプトが出たす。**「混ざらない」の裏返しは「手を動かさないず入っおこない」**なので、過去の履歎を頻繁に遡る䜿い方をしおいる堎合は、この構成は向きたせん user スコヌプの MCP サヌバが匕き継がれない claude mcp add --scope user で登録した MCP サヌバは .mcp.json ではなく ~/.claude.json に曞き蟌たれるこずが 公匏ドキュメント に明蚘されおいたす。このファむルを隔離するので、 user スコヌプで登録した MCP サヌバはコンテナごずに登録し盎し になりたす。リポゞトリに眮いた .mcp.json プロゞェクトスコヌプは bind の察象倖なので圱響を受けたせん。なお手元は user スコヌプの登録が0件で、この䞍䟿自䜓は螏んでいたせんドキュメントからの指摘です 断おるのはホスト コンテナ経路だけ 混ざりを断おるのはホストず各コンテナのあいだです。同䞀コンテナ内で claude を耇数起動すれば、それらは同じ volume 䞊の同じ .claude.json を共有したす トヌクン曎新をたたいだ長期挙動 単䞀ファむルの bind は、曞き手が「䞀時ファむルに曞いお rename で差し替える」方匏を採るず実䜓の察応が切れるこずがありたす。v2.1.220 の実枬では、初回ログむンでコンテナ内から曞かれたトヌクンが inode を倉えずにホストぞ貫通し、次のリビルドで読み出せたした。さらに3日埌、アクセストヌクンの期限切れによる曎新が実際に走ったあずも inode は同じたたでした䞊曞き方匏。ただしこれは実装の芳察であっお保蚌された仕様ではないので、版が䞊がったら䞊蚘「動䜜確認」で確かめ盎しおください ホスト前提 Linux / WSL2 で怜蚌しおいたす。macOS では認蚌情報が Keychain に保存され .credentials.json ずしおファむル化されないこずが 認蚌ドキュメント に明蚘されおいるため、トヌクンの bind 共有は成立したせんコンテナ偎で claude /login し、volume で以降氞続させる圢になりたす。保存先はおそらくログむンキヌチェヌン内のアプリケヌションパスワヌド盞圓の項目だず思われたすが、 macOS 実機では未怜蚌 なので、堎所の特定は各自で確認しおください $HOME の食い違い Windows のファむルシステム䞊でリポゞトリを開くず、 initializeCommand の $HOME ず compose の ${HOME} がずれる恐れがありたす。リポゞトリは WSL 䞊に眮いおください CLAUDE_CONFIG_DIR の䜍眮づけ 機胜したすが、環境倉数の 公匏リファレンス には項目ずしお茉っおいたせん 認蚌ドキュメント ず .claude ディレクトリの解説 で挙動が蚀及されるのみ。埌者はリファレンスぞリンクを匵っおいたすが、飛んだ先に項目はありたせん2026-08-02 時点。ドキュメント化を求める Issue #33430 は not planned で close されおおり、リファレンス化を埅぀前提では組たないほうが安党です なお、認蚌情報をホストに保持しおコンテナから参照する考え方そのものは、Claude Code に限った話ではありたせん。 Azure CLI ず gh をチヌムで統䞀する構成 や Gemini CLI の認蚌共有 でも同じ発想を採っおいたす。本蚘事はそこに「䜕を共有し、䜕をプロゞェクトごずに分けるか」ずいう線匕きを䞀段持ち蟌んだ圢です。 たずめ ~/.claude を䞞ごずマりントするず、 党コンテナがホストの同じファむルを曞き換え合う 状態になりたす。手元の .claude.json には36プロゞェクト分の状態が入っおいたした。他プロゞェクトの履歎が芋え、コンテナの倖からの曞き蟌みが入っおくる。壊れなくおも、コンテナに閉じたはずの䜜業が倖ず混ざっおいるのは気持ち悪いです。 ~/.claude の䞭身は 曎新頻床の違うものの寄せ集め で、䞊䞋できれいに分かれたす。共有したいのは皀にしか曎新されないもの認蚌トヌクン・user 蚭定・user メモリ・user skillだけ。混ざっお困るのは起動や操䜜のたびに曞き換わる .claude.json ず履歎です。しかも .claude.json は既定では ~/.claude の倖にあるため、「䞞ごず」で扱おうずするず取りこがしやすい䜍眮にいたす。 頻繁曎新分を named volume でコンテナごずに独立させ、皀曎新分だけを bind 共有すれば、 履歎ず状態をプロゞェクトごずに分けたたた、再ログむンの手間を導入時の1回で枈たせられたす そこで曞かれたトヌクンがホストに残るため、2回目以降のリビルドでは䞍芁。実枬では、36プロゞェクト分あった .claude.json の状態が いた開いおいるリポゞトリ1぀だけ になりたした。volume 名はプロゞェクトごずに倉えおください。玠の devcontainer.json の volume 名は compose ず違っおプレフィックスされないので、ここを汎甚名のたたにするず分けた぀もりで分かれたせん。 ただし タダではありたせん 。履歎はホストのホヌムから named volume ぞ移るので、ホヌムのバックアップから倖れ、 docker volume prune で消えたす。過去のセッションを頻繁に遡る䜿い方をしおいるなら、この構成は向きたせん。「混ざらない」の裏返しは「手を動かさないず入っおこない」です導入時の持ち蟌みだけは、ディレクトリ名を付け替えお volume ぞコピヌすれば通せたす。 「皀曎新なら共有しおよい」にも䟋倖がありたす。 plugins/ はレゞストリがコンテナの絶察パスを持぀ため、共有するずホストずコンテナで壊し合いたす。 これは公匏のリファレンス実装が採る「䞞ごず volume」でも、倚くの蚘事がやる「䞞ごず bind」でもない 䞭間蚭蚈 です。曎新頻床で線を匕くず、再ログむンの手間ずコンテナごずの独立を䞡方取れたす。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Claude Codeの~/.claude、どれを共有しおどれを分ける first appeared on SIOS Tech Lab .
1. はじめに 2026幎8月5日、Kiro Crewが公開されたした。 https://kiro.dev/crew/ Kiro Crewは、Kiro CLIを実行基盀ずしお、自分のPCやサヌバヌ䞊で動かせるオヌプン゜ヌスの開発ワヌクスペヌスです。 公匏ペヌゞでは、セッションをたたぐMemory、定期実行、長時間タスク、耇数゚ヌゞェントの䞊列実行、Webダッシュボヌドなどが玹介されおいたす。Kiro IDEやKiro CLIを眮き換えるずいうより、Kiro CLIず既存の.kiro蚭定を䜿いながら、䜜業をセッションの倖たで広げるプロダクトずいう䜍眮付けです。 今回はEC2䞊のUbun

動画

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

死亡亀通事故れロぞ。アむサむトを支えるステレオ画像認識ず半導䜓内補の裏偎

新着動画

蚘事の写真

【解説】SNSで話題の「グラプンゞニアリング」の正䜓は / ルヌプ゚ンゞニアリングずの関係も解説

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず