CLAUDE LABEN
DEFAULT — Sonnet 5 が Pro・Team Standard・Enterprise の既定モデルになりました。1M トークンのネイティブコンテキストと、既定でオンになる適応思考を伴いますREWIND — /rewind が /clear 後の会話も復元できるようになりました。チェックポイントからコード・会話・その両方のどれを戻すか選べますORGDEFAULT — 組織既定モデルに対応しました。自分でモデルを選んでいない場合、/model に Org default(または Role default)として表示されますATTACH — チャットのファイル添付がクリック可能になりました。Cmd / Ctrl + クリックで Finder や Explorer 側に該当ファイルを表示できますBASH — bash モードでファイルパスの補完がライブに動くようになり、自動モードは許可しなかった理由を明示するようになりましたEXPIRE — $100 プロモクレジットの受け取りは8月2日で締め切られました。すでに受け取っている分は9月17日に失効するため、検証用の実行はこの窓の内側に置く必要がありますDEFAULT — Sonnet 5 が Pro・Team Standard・Enterprise の既定モデルになりました。1M トークンのネイティブコンテキストと、既定でオンになる適応思考を伴いますREWIND — /rewind が /clear 後の会話も復元できるようになりました。チェックポイントからコード・会話・その両方のどれを戻すか選べますORGDEFAULT — 組織既定モデルに対応しました。自分でモデルを選んでいない場合、/model に Org default(または Role default)として表示されますATTACH — チャットのファイル添付がクリック可能になりました。Cmd / Ctrl + クリックで Finder や Explorer 側に該当ファイルを表示できますBASH — bash モードでファイルパスの補完がライブに動くようになり、自動モードは許可しなかった理由を明示するようになりましたEXPIRE — $100 プロモクレジットの受け取りは8月2日で締め切られました。すでに受け取っている分は9月17日に失効するため、検証用の実行はこの窓の内側に置く必要があります
記事一覧/Claude Code
Claude Code/2026-08-03上級

存在チェックが通っても書けない — 無人実行の前提を能力プローブで測る

ディレクトリが存在することと、そこへ書けることは別です。無人で走る Claude Code のセッションが静かに止まる原因を実測し、能力プローブ方式のプリフライトを設計した記録です。

Claude Code209自動化74スケジュール実行3エラーハンドリング7運用設計19

プレミアム記事

朝いちばんにログを開いたら、処理が1行目で止まっていました。

個人開発の作業を夜のうちに片付けるための処理で、前の晩まで何ヶ月も同じ手順で走っていたものです。コードは一文字も変えていません。変わったのは、実行環境の側でした。作業用に使っていたディレクトリの所有者が、いつの間にか別のユーザーになっていて、そこへ書き込めなくなっていた。それだけのことです。

ただ、私が引っかかったのはその先でした。手順の冒頭には、ちゃんと確認処理が入っていたのです。ディレクトリがあるかを調べ、無ければ作る。あるならそのまま使う。何年も疑わずに書いてきた形です。

その確認は、その朝も正常に通過していました。存在していたからです。

書けないまま。

存在していることは、使えることを意味しない

まず、手元で同じ状況を作って挙動を確かめました。所有者だけが読み込みと実行を持ち、書き込みを落としたディレクトリを用意します。

mkdir locked && chmod 500 locked
 
mkdir -p locked; echo "mkdir -p exit=$?"
echo "-d test: $([ -d locked ] && echo true || echo false)"
echo "-w test: $([ -w locked ] && echo true || echo false)"
touch locked/x 2>/dev/null; echo "touch exit=$?"

出力はこうなります。

mkdir -p exit=0
-d test: true
-w test: false
touch exit=1

mkdir -p が 0 を返している点が、私にとっては意外でした。作れなかったわけではなく、すでにあるから何もしなかった、という意味での 0 です。POSIX の定義としては正しい。けれど、mkdir -p "$DIR" && cd "$DIR" と書いた側は、この 0 を「これで使える状態になった」と読んでしまいます。

[ -d ] も同じです。存在を尋ねる述語に、権限を尋ねているつもりで頼っている。尋ねていないことに答えは返ってきません。

この日壊れたのは、まさにその隙間でした。

存在チェックと能力プローブを並べて測る

そこで、確認の方法を二種類に分けて比べることにしました。

一方は、これまで書いてきた存在チェックです。os.path.isdiros.path.exists.git ディレクトリの有無。もう一方は能力プローブ、つまり「これから実際に行う操作を、小さく一度やってみる」方式です。書くなら書いてみる。消すなら消してみる。git を使うなら git rev-parse を通してみる。

環境側に、壊れ方の異なる5つの状態を作りました。実在するけれど書けないディレクトリ、ディレクトリのつもりがファイルだったパス、リンク切れのシンボリックリンク、.git はあるがリポジトリとして成立していないディレクトリ、そして読み取り専用でマウントされた実在の領域です。

結果です。

ケース存在チェック能力プローブ
存在するが書き込めないディレクトリOKNG
ディレクトリのはずがファイルNGNG
リンク切れのシンボリックリンクNGNG
.git はあるがリポジトリではないOKNG
読み取り専用マウントOKNG

5件のうち3件、割合にして60%が、存在チェックだけを通過しました。しかも通過した3件は、いずれも「パスとしては完全に正しく、操作だけができない」という種類の壊れ方です。パスの綴りを疑っても永遠に見つかりません。

進んでしまった場合に返るメッセージも記録しました。

ケース実際の失敗
書き込めないディレクトリtouch: cannot touch ...: Permission denied
ディレクトリのはずがファイルtouch: cannot touch ...: Not a directory
.git はあるがリポジトリではないfatal: not a git repository(終了コード 128)
読み取り専用マウントtouch: cannot touch ...: Read-only file system

無人実行の落とし穴は、これらのエラーが処理のずっと後ろで出ることです。前段の重い処理を全部終えてから、最後の書き出しで初めて落ちる。同じリポジトリの記事ファイル1,594件(約1,929万文字)を読んで集計する前段を実測すると 0.093秒でした。対して、5件の能力プローブは合計 2.57ミリ秒です。前段が数分かかる構成なら、その数分がまるごと捨てられることになります。

割合で見ると、前段の集計に対して能力プローブは約2.8%です。3回連続で計測したところ、「前段を全部やってから落ちる」経路と「先に測って落ちる」経路の所要時間の比は 6,470倍・8,315倍・6,892倍でした。この差が生まれるのは、実際に行う操作をそのまま、ただし極小の規模で一度だけ試すからです。権限の理屈を推論しないので、推論が外れる余地がありません。

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

この記事の続きを読む

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

この記事で得られること
存在チェックと能力プローブを5ケースで突き合わせ、3/5 が「存在するのに使えない」で通過した実測結果
os.access が True を返し、作成・追記・改名まで成功しながら削除だけが EPERM で落ちるディレクトリの挙動
プローブ側が本番と違う読み方をした結果、正しい資格情報を不合格にした失敗と、その再発を防ぐ書き方
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-06-27
無人で回し続けても重くならないか — Claude Code 長時間セッションのメモリ使用量を観測して頭打ちにする
長時間の無人セッションで Claude Code が徐々に重くなる問題を、ps による RSS 定点観測・ローリング基準値のウォッチドッグ・セグメント分割の3点で頭打ちにする運用設計を、観測スクリプトと before/after で具体的にまとめます。
Claude Code2026-06-19
弾いたはずの記事が公開された — 品質ゲートと git push を同じ呼び出しにまとめた代償
無人運用の投稿パイプラインで、品質ゲートで弾いたはずの記事がそのまま公開されました。原因はゲートと git push を一つのシェル呼び出しに連結したことでした。終了コードが握りつぶされる仕組みと、公開マーカー方式で「通過を確認してからしか push しない」二段構えの実装を記録します。
Claude Code2026-06-17
予告された課金変更が直前で保留された——切り替えを急がない自動運用の設計
6/15に発効するはずだった課金変更が当日に保留されました。告知日を信じてパイプラインを切り替えると、撤回時に二重で壊れます。実行時シグナルでカットオーバーを判断する設計を、実装コードとともに残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →