1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Grok Build CLI、CLAUDE.mdは読んでもhooksは検出しなかった

1
Posted at

はじめに

対象読者は、Claude Code を日常的に使っていて、他社のエージェント型 CLI がどこまで CLAUDE.md.claude/ 配下の設定と互換性を持つか気になる開発者です。SpaceXAI(旧 xAI。2026年2月の SpaceX 統合を経て、7月6日に社名を SpaceXAI へ変更)が 2026 年 7 月にオープンソース化した Rust 製コーディングエージェント CLI「Grok Build」を、実際に Claude Code 運用中のリポジトリにインストールして grok inspect grok doctor grok mcp doctor を実行し、何を読み取れて何を読み取れなかったかを確認しました。

TL;DR

  • npm install -g @xai-official/grok でインストールしたところ、バージョン 0.2.112 が入りました(実行ログは後述)。
  • grok inspect を実行すると、このリポジトリの CLAUDE.md(約11,715トークン相当と表示)と .claude/rules/ 配下の16件のルールファイル、.claude/agents/ 配下のエージェント定義、.mcp.json の MCP サーバー定義を認識しました。
  • 一方で .claude/settings.json に登録済みの hooks(SessionStart PreToolUse など9種・実体スクリプト19個)は、Hooks (0) と表示され検出されませんでした。
  • .mcp.json の MCP サーバー(kinako-mocchi)は認識したものの、grok mcp doctor は「repo-local server not started for an untrusted folder」という理由で起動をブロックしました。

Grok Build とは

SpaceXAI の公式発表(Introducing Grok Build)によると、Grok Build は Grok 4.5 を搭載したフルスクリーン・マウス対応のターミナル UI を持つコーディングエージェントです。GitHub の xai-org/grok-build には「Grok Build is SpaceXAI's terminal-based AI coding agent」と明記されており、Apache 2.0 ライセンスで公開されています。MarkTechPost の記事(2026-07-15)によると、エージェントハーネス・TUI・ツール層のソース全体が公開されているとのことです。ベータローンチ自体は2026年5月25日で、7月にオープンソース化されたという経緯です。GitHub 組織名(xai-org)や npm パッケージ名(@xai-official/grok)には合併前の「xai」表記が残っています。

インストールと動作確認(実測)

実際にこのプロジェクトのスクラッチパスで以下を実行しました。

$ npm install -g @xai-official/grok
added 3 packages in 14s

$ grok --version
grok 0.2.112 (9bbd559437)

インストール自体は数秒で完了し、追加パッケージはわずか3個でした。grok --help を見ると、--permission-modedefault / acceptEdits / auto / dontAsk / bypassPermissions / plan)、--sandbox-w/--worktree--agent といったオプション名が並んでいます。Claude Code の --permission-mode や Codex の sandbox プロファイルに近い語彙で、コーディングエージェント CLI 界隈でオプション設計が収斂してきていることがうかがえます。

grok doctor で環境診断した実測ログ

APIキー未設定・未ログインの状態でも grok doctor は動作しました。

$ grok doctor
Grok Doctor

Environment
  · terminal                     Unknown
  · multiplexer                  None detected
  · ssh                          no

Clipboard
  · native                       unavailable
  · osc 52                       unknown

Voice
  · microphone                   none detected (no microphone recorder found on PATH...)

Findings
  ! clipboard.delivery-unavailable This clipboard route can't reach the target clipboard
  ! voice.no-input-device        Voice dictation is unavailable: no microphone recorder found on PATH

2 issues, 1 recommendation

クラウドのヘッドレス実行環境(クリップボード・マイクなし)であることを正しく検出し、2件の issue として報告してきました。ログイン前でも環境診断だけは完結する設計です。

grok inspect がこのリポジトリで検出したもの

grok inspect は、カレントディレクトリのエージェント設定を横断的に走査するコマンドです。実際の出力(抜粋)は次の通りでした。

Environment
└ Version: 0.2.112 [unknown]
└ Git root: /home/user/zenn-blog-automation/
└ Project trusted: no

Project Instructions (16)
└ /home/user/zenn-blog-automation/CLAUDE.md (project, ~11715 tokens)
└ /home/user/zenn-blog-automation/.claude/rules/agent-team-summary.md (project, ~1396 tokens) [claude]
└ /home/user/zenn-blog-automation/.claude/rules/article-evidence-rules.md (project, ~1508 tokens) [claude]
...(以下14件省略)

MCP Servers (1)
└ kinako-mocchi (stdio)  .mcp.json

Hooks (0)
└ (none)

Harness Compatibility
└ claude
  └ skills     on   (default)
  └ rules      on   (default)
  └ agents     on   (default)
  └ mcps       on   (default)
  └ hooks      on   (default)
  └ sessions   on   (default)

CLAUDE.md を筆頭に、シンボリックリンクされた .claude/rules/ 配下のルールファイル16件、エージェント定義、.mcp.json の MCP サーバー定義まで、Claude Code のプロジェクト構成をそのまま読み取っています。この横断解析の仕組みを図にすると次のようになります。

hooks だけ検出されなかった

Harness Compatibility の表示上は claude ハーネスの hooks 項目が on (default) になっているにもかかわらず、実際の Hooks (0) は空でした。このリポジトリの .claude/settings.json には SessionStart UserPromptSubmit PreToolUse PostToolUse PostToolUseFailure PreCompact PostCompact Stop SubagentStop の9イベントにフックスクリプトが登録されており(.claude/hooks/ 配下に実体スクリプトが19個存在します)、設定自体は存在します。

grok inspect の Config Sources には Project: (none) と表示されており、Grok Build 自身の設定ファイル(~/.grok/config.toml 相当のプロジェクト版)は見つからなかったと出力されています。つまり Harness Compatibility の「対応方針の表明」と、実際に .claude/settings.json のフックイベント定義を解釈するパーサーの実装は、少なくとも今回検証した 0.2.112 の時点では一致していないと読み取れます。ヘッドレス環境からの限定的な検証のため、UI 上の別コマンドで hooks を読み込んでいる可能性までは排除できませんが、grok inspect の出力を見る限りでは未検出でした。

MCP サーバーは「untrusted folder」でブロックされた

.mcp.json に定義されている kinako-mocchi サーバーについて grok mcp doctor を実行すると、次のように起動前にブロックされました。

{
  "servers": [
    {
      "name": "kinako-mocchi",
      "transport": "stdio",
      "target": "node scripts/kinako-mocchi-mcp-bridge.js",
      "source": ".mcp.json",
      "checks": [
        {
          "label": "folder untrusted",
          "passed": false,
          "detail": "repo-local (project-scoped) server not started for an untrusted folder",
          "hint": "re-run with --trust to allow repo-local servers"
        }
      ],
      "healthy": false
    }
  ],
  "healthy_count": 0,
  "failing_count": 1
}

サーバー定義自体は正しくパースできているのに、「信頼していないフォルダのリポジトリローカル MCP サーバーは起動しない」というセキュリティゲートで止まっています。任意の stdio コマンドを黙って実行しない設計は、Claude Code が未知のリポジトリで確認プロンプトを出す挙動と考え方が近いといえます。

Claude Code / Codex とのオプション語彙比較

grok --help で確認できたオプションと、見慣れた語彙を並べると次の通りです。

概念 Grok Build 備考
権限モード --permission-mode <MODE>default/acceptEdits/auto/dontAsk/bypassPermissions/plan 値の名前まで Claude Code とほぼ同一
サンドボックス --sandbox <PROFILE>(環境変数 GROK_SANDBOX プロファイル指定式
worktree 分離 -w, --worktree [<WORKTREE>] ブランチ・タグ・コミット基点を --worktree-ref で指定可能
サブエージェント --agent <NAME> / --agents <JSON> / --no-subagents インライン JSON 定義に対応
MCP 管理 grok mcp list/add/remove/doctor サブコマンド形式で独立
単発実行 -p, --single <PROMPT> ヘッドレス CI 利用を想定した設計

コマンド体系そのものは新規に設計されていますが、権限モードの値名(acceptEditsbypassPermissions)まで一致している箇所があり、エージェント型 CLI の語彙が事実上の共通言語になりつつある様子が見て取れます。

まとめ

npm install -g @xai-official/grok から grok doctor / grok inspect / grok mcp doctor までを実際に実行した結果、Grok Build は CLAUDE.md.claude/rules/.claude/agents/.mcp.json を横断的に読み取る一方、.claude/settings.json の hooks 定義は検出しませんでした。MCP サーバーはパースこそするものの、信頼していないフォルダでは起動をブロックする安全側の設計です。「Claude 互換」を掲げるハーネスが実際にどこまで設定を解釈できるかは、grok inspect のような診断コマンドを自分のリポジトリで動かして確かめるのが一番早いと分かりました。

著者視点の発見ポイント

今回もっとも意外だったのは、Harness Compatibility の表示上は hooks: on (default) となっているのに、実際の grok inspect の出力では Hooks (0) だった点です。対応表明とパーサー実装の間にギャップがあることは、ドキュメントだけを読んでいては分かりません。実際にコマンドを自分のプロジェクトで動かして出力を突き合わせないと見えない差分でした。

関連記事

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?