ANTIGRAVITY LABEN
記事一覧/Editor View
Editor View/2026-07-17上級

パスの空白ひとつで、エージェントのコマンド9形が「0件・成功」を返しました

ワークスペース名に空白が入っているだけで、エージェントの生成したコマンドは静かに別の場所へ届きます。未引用パス11形の実測と、cd の一行に境界を閉じる入口スクリプトの実装まで。

Antigravity338ワークスペース2シェルエージェント64自動化30

プレミアム記事

エージェントに「記事の本数を数えて」と頼んだら、0 件でした と返ってきました。

ワークスペースには 977 本の MDX があります。ターミナルで同じことを手で打つと、ちゃんと 977 と出ます。

エラーは出ていません。コマンドは成功しています。ただ、数えた場所が違っていました。

原因はワークスペースの名前でした。Dolice Labs。この真ん中の空白ひとつです。

個人開発では、ワークスペースの置き場所を自分で選べます。私自身、Dropbox の同期フォルダをそのまま作業場所にしていて、フォルダ名に空白を入れたことを長いあいだ気にしていませんでした。人間が読むための名前ですから、空白があるほうが読みやすい。

エージェントに手を動かしてもらうようになって、この判断のつけが回ってきました。

空白は末端ではなく、接頭辞にあります

最初に測ったのは「そもそもどれくらい該当するのか」でした。

ワークスペース直下から3階層のディレクトリを数えます。

WS="/path/to/Dolice Labs"
find "$WS" -maxdepth 3 -type d | wc -l              # 1951
find "$WS" -maxdepth 3 -type d | grep -c ' '        # 1951

1,951 件中 1,951 件。100% です。

ファイル名のほうを見ると、印象がまったく変わります。

find "$WS" -maxdepth 3 -type f | wc -l                          # 1816
find "$WS" -maxdepth 3 -type f | awk -F/ '{print $NF}' | grep -c ' '   # 5

1,816 件中 5 件。0.3% です。

同じワークスペースの、同じファイル群です。数え方を変えただけで 100% と 0.3% に割れました。

空白はファイル名の側にはほとんどありません。パスの接頭辞、つまり Dolice Labs という一箇所にだけあります。そして絶対パスを組み立てる限り、その一箇所が全てのパスに配られます。

node_modules の奥深くにある名前の綺麗なファイルも、絶対パスで指した瞬間に空白を含みます。

ここが分かれ道でした。問題はファイル名ではなく、パスの組み立て方のほうにありました。

未引用パスの11形を並べて、何が返るかを測りました

エージェントが書くシェルコマンドは、毎回 "$WS" と引用してくれるとは限りません。実際、$WS と素で書かれたときに何が起きるかを、11の形で測りました。

検証用に、空白入りのワークスペースを作ります。

BASE="$HOME/pathprobe"
WS="$BASE/Dolice Labs"
mkdir -p "$WS/content/articles/ja/tips" "$WS/out"
for i in 1 2 3 4 5; do echo "# a$i" > "$WS/content/articles/ja/tips/a$i.mdx"; done
mkdir -p "$BASE/sandbox" && cd "$BASE/sandbox"

.mdx は5本。ここで $WS を引用せずに触ります。

コマンドの形終了コード返った値正しい値
find $WS -name "*.mdx" | wc -l005
ls $WS | wc -l004
grep -rl "a1" $WS | wc -l001
[ -d $WS ] && echo yes || echo no0noyes
mkdir -p $WS/out/gen0作成された別の2箇所に作成
for f in $(find "$WS" -name "*.mdx")010 回5 回
find "$WS" ... | xargs wc -l00 total5 total
python3 script.py $WS(argv の数)021
du -sh $WS012K(別物のサイズ)実体のサイズ
cat $WS/.../a1.mdx1# a1
cp $WS/.../a1.mdx ./c.mdx1copied

11形のうち、即座に失敗したのは catcp の2形だけでした。残る9形、82% は終了コード 0 を返しながら誤った結果を渡しています。

内訳を見ると、壊れ方が一様でないことが分かります。

findgrep0件で成功 します。$WS/path/to/DoliceLabs の2語に分かれ、どちらも存在しないため探索対象がなく、何も見つからないまま正常終了します。エラーは標準エラー出力に出ますが、| wc -l を挟んだ時点で終了コードは wc のものになり、上流の悲鳴は消えます。

[ -d $WS ]存在するのに「ない」と答えます。2語になったことで [ が引数の数を数え間違え、判定式として成立しないまま偽を返します。存在チェックで分岐する処理は、ここで静かに逆へ進みます。

for f in $(find "$WS" ...)5本のファイルを10行として扱いますfind 自体は引用されていて正しく5本返すのに、コマンド置換の結果が空白で語分割され、各パスが2つに割れます。ループは10回まわり、10回とも壊れたパスを掴みます。引用したのに壊れる、という一番気づきにくい形です。

python3 script.py $WSargv が2個になります。スクリプト側が sys.argv[1] だけを見ていれば、/path/to/Dolice を作業対象だと信じて動き出します。

そして mkdir -p $WS/out/gen は、終了コード 0 で成功しながら、実体ではない2箇所にディレクトリを作りました。

$ ls -A "$BASE/sandbox"     # カレントディレクトリ
Labs
 
$ ls -A "$BASE"
Dolice   Dolice Labs   sandbox

mkdir -p /path/to/Dolice Labs/out/gen は、/path/to/DoliceLabs/out/gen という2つの引数として解釈されます。前者は絶対パスなので $BASE の直下に、後者は相対パスなのでカレントディレクトリの下に生まれます。

読み取りは 0件で返り、書き込みは知らない場所に届く。この非対称が、この問題の性質を決めています。

読み取りが 0件で返るなら、まだ「何もしなかった」だけです。書き込みが別の場所に成功していると、エージェントは「やりました」と報告し、成果物はどこにもない。私が最初に踏んだのは後者でした。

エラーの不在は、正しさの証明ではありませんでした。

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

この記事の続きを読む

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

この記事で得られること
未引用パス11形の実測: 9形が exit 0 のまま誤った結果を返す(find は0件、for は10行、argv は2個)
cd の一行に境界を閉じる入口スクリプト ws.sh の完全実装(実書き込み probe・終了コード78・exec 引き渡し)
シンボリックリンク別名の限界: find が辿らず0件、readlink -f で空白入りパスに戻る
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Agents & Manager2026-07-15
エージェントのコミットに .bak が混じる — 自動修正ツールの副産物がリポジトリに入る原因と対処
エージェントに --fix 系ツールを走らせた後のコミットに .bak や .orig が紛れ込む症状について、再現条件と原因、ステージ範囲の限定・副産物の即時掃除・pre-commit での拡張子ゲートという3つの対処をまとめました。
Agents & Manager2026-07-12
Antigravity のエージェントに任せる作業と任せない作業を2週間の運用で見直す
個人開発の日々のタスクを2週間ほど Antigravity のエージェントに任せてみて、任せて正解だったものと手元に残すべきだったものの線引きを、運用ログを添えて振り返ります。
アプリ開発2026-07-02
審査リジェクトの朝に慌てないために — App Store の指摘をエージェントで分類し、再提出までの手順を固定する
App Store 審査リジェクトの文面を Antigravity に渡して分類し、ガイドライン別プレイブックと Info.plist リントで再提出まで最短で戻す運用設計。実測の所要時間短縮も紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →