CLAUDE LABEN
OPUS48 — Bedrock・Vertex・AWSの既定モデルがClaude Opus 4.8になりました。Opus 4.8とHaiku 4.5はMessages APIでも利用でき、プロンプトキャッシュや拡張思考に対応しますSTREAM — Claude Codeの安定性・品質更新が届きました。stream-jsonでのサブエージェントのテキスト対応、権限とフックの取り回し強化、バックグラウンドエージェントの報告改善が含まれますFASTEND — Claude Opus 4.7のfastモードは7月24日に削除されます。以降はspeed: 'fast'がエラーになるため、Opus 4.8のfastモードへの移行をおすすめしますTEACH — Claude for Teachersが始まりました。米国K-12の認証済み教員にプレミアム機能を無償提供し、全50州の基準に沿ったカリキュラム連携や教育コネクタも用意されていますFIX — 今回の更新ではChrome・Windows・Bedrock・Vertex・フック・セッション復旧まわりの不具合が広く修正され、ターミナル描画も高速化しましたIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますOPUS48 — Bedrock・Vertex・AWSの既定モデルがClaude Opus 4.8になりました。Opus 4.8とHaiku 4.5はMessages APIでも利用でき、プロンプトキャッシュや拡張思考に対応しますSTREAM — Claude Codeの安定性・品質更新が届きました。stream-jsonでのサブエージェントのテキスト対応、権限とフックの取り回し強化、バックグラウンドエージェントの報告改善が含まれますFASTEND — Claude Opus 4.7のfastモードは7月24日に削除されます。以降はspeed: 'fast'がエラーになるため、Opus 4.8のfastモードへの移行をおすすめしますTEACH — Claude for Teachersが始まりました。米国K-12の認証済み教員にプレミアム機能を無償提供し、全50州の基準に沿ったカリキュラム連携や教育コネクタも用意されていますFIX — 今回の更新ではChrome・Windows・Bedrock・Vertex・フック・セッション復旧まわりの不具合が広く修正され、ターミナル描画も高速化しましたIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-07-19上級

コミット済みのシンボリックリンクが worktree の外を指す — AI に並列作業を預ける前のリポジトリ点検

Claude Code 2.1.212 で、コミット済みのシンボリックリンクを worktree 作成時に辿ってリポジトリ外へ書きうる不具合が修正されました。パッチが塞いだのは辿りの側です。危険なリンクがコミットされている側を点検する監査スクリプトと、隔離の手順をまとめました。

Claude Code201worktree3セキュリティ13自動化70

プレミアム記事

Claude Code 2.1.212 の変更履歴に、一行だけ手を止めた項目がありました。リポジトリにコミットされたシンボリックリンクが .claude/worktrees にあると、worktree の作成時にそれを辿ってリポジトリの外にファイルを作りうる、という不具合の修正です。すでに直っています。

ただ、直ったと知って安心する前に、自分が何を Claude Code に預けているかを思い出しました。個人開発の自動化で、私はいくつかのリポジトリを日々 clone しては worktree を切り、その上で並列に作業を走らせています。clone してくるリポジトリの中身を、シンボリックリンクという観点で一度も見たことがありませんでした。

パッチが塞いだのは「辿り」の側です。ツールが悪意あるリンクを辿らないようにする修正です。けれど「危険なリンクがそもそもコミットされている」側は、リポジトリを扱う私にしか点検できません。パッチは全ての AI ツール・全ての操作を守ってくれるわけではなく、辿りうる経路は worktree だけでもありません。この記事は、その点検を手元でどう回すかの記録です。

git はシンボリックリンクを「行き先の文字列」ごとコミットする

前提を一つ確認します。git はシンボリックリンクを特別扱いせず、中身が「リンクの行き先の文字列」であるファイルとして保存します。ファイルモードだけが通常ファイル(100644)と異なり、120000 になります。

手元のリポジトリで実際に見てみます。

# 危険な例を意図的に作る(検証用。すぐ消します)
ln -s /etc/hosts ./link-to-hosts
git add ./link-to-hosts
 
# git がどう記録したかを見る
git ls-files -s ./link-to-hosts
# 100644 ではなく 120000 で入る:
# 120000 a1b2c3...   0   link-to-hosts
 
# blob の中身は「行き先の文字列そのもの」
git cat-file blob :./link-to-hosts
# /etc/hosts

120000 のエントリは、blob の中身が丸ごとリンクの行き先です。/etc/hosts でも ../../../../home/user/.ssh/authorized_keys でも、文字列である限り git は淡々とコミットします。ここに検証はありません。つまり、リポジトリ外を指すリンクは、通常の変更と見分けがつかない形でリポジトリに紛れ込めます。

さらに厄介なのが core.symlinks の存在です。この設定が true(多くの環境の既定)なら、checkout でリンクは本物のシンボリックリンクとして復元されます。false なら、行き先の文字列を中身に持つ通常ファイルとして書き出され、辿られません。同じコミットが、環境設定次第で「辿られるリンク」にも「ただのテキスト」にもなる。この差が、点検を難しくしています。

なぜ worktree の作成で外に出られたのか

シンボリックリンクをまたいだ書き込みが外に出る仕組みは、worktree に限った話ではありません。一般に、あるパスへの書き込みが途中にシンボリックリンクを含んでいると、OS はリンクを辿った先へ書き込みます。a/b/cb/tmp/evil へのリンクなら、a/b/c への書き込みは /tmp/evil/c に落ちます。

worktree の作成では、ツールが .claude/worktrees 配下に管理用のファイルを書きます。もしそのパスの一部が、リポジトリにコミットされたリンクとして「リポジトリ外」を指していたら、書き込みはリポジトリの外へ抜けます。checkout の順序次第では、書こうとした瞬間にはリンクが実体として存在している、という時間差も絡みます。いわゆる TOCTOU(Time-of-check to time-of-use)の隙です。

2.1.212 の修正は、この辿りをツール側で止めるものでした。評価に値する対応です。一方で、私が引き受けるべきなのは別の問いでした。「そもそも、そんなリンクが混ざったリポジトリを、自分は AI に触らせていないか」。clone 元が自分の管理下にあるとは限りません。フォークやテンプレート、依存として取り込む外部リポジトリを worktree で開くなら、点検の対象は広がります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
リポジトリ内のシンボリックリンクから、絶対パスやリポジトリ外を指す危険なものだけを洗い出す監査スクリプト(コピペで動きます)
git がシンボリックリンクを mode 120000 と行き先の文字列ごとコミットする仕組みと、core.symlinks の違いで辿られるかどうかが変わる理由
パッチ適用済みでも自衛として回す、clone → 監査 → 隔離 → worktree 作成 の 4 手順と、CI に差し込む最小チェック
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-07-05
Trusted Devices を小規模チームで運用する — メンバー端末の検証とローテーション設計
Team/Enterprise の Trusted Devices を2〜5人規模で導入する際の、端末登録・無人実行前のプリフライト・端末ローテーション時の漏れ対策を、実運用の手順とスクリプトで整理します。
Claude Code2026-06-29
Trusted Devices の発想を一人運用に翻訳する — 自動実行を「許可した端末からだけ」に縛る
2026年6月28日に Claude Code へ入った Trusted Devices は Team / Enterprise 向けの端末検証機能です。同じ仕組みは使えなくても、その発想は一人の自動運用に翻訳できます。端末を壊れにくく識別し、許可した端末以外では即座に止める実装を、動くコードとつまずきどころ付きでまとめます。
Claude Code2026-06-28
無人で回す自動処理に、静的 API キーを置きっぱなしにしない — WIF で短命資格情報へ切り替える
Claude Code が静的 API キーを WIF(Workload Identity Federation)の短命・スコープ付き資格情報へ置き換える方向に進んでいます。深夜に無人で回すスケジュール実行で、キー漏れの被害範囲を構造的に小さくする移行手順を、動くコードとつまずきどころ付きで整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →