mcpField
O
Overreach

Overreach

github.com/Naveja00コーディングエージェント616 週間前に更新

Overreach について

Overreachは、タスクのプロンプトに照らしてコーディングエージェントの変更を確認するコマンドラインツールです。決定的な差分チェックで未承認の追加やファイル間のリスクを検出し、任意でLLMを使って許可範囲を抽出します。

主な機能

  1. 01プロンプトの範囲とコード差分の比較
  2. 02想定外のファイル、依存関係、エンドポイントの検出
  3. 03ファイル間のレビューリスクの検出
  4. 04正規表現解析によるAPIキー不要の実行
  5. 05コミット前フックまたはGitHub Actionへの組み込み
  6. 06JSON出力とMCPサーバーの提供

活用シーン

  1. 01マージ前のエージェント生成コードのレビュー
  2. 02プルリクエストで範囲外の変更をブロック
  3. 03コミット前にローカルで差分を確認
  4. 04AIエージェント自身に変更を検査させる

MCP 対応

OverreachはAIエージェントが自身の作業を確認するためのMCPサーバーを提供します。`overreach --serve`で起動し、Claude DesktopやCursorなどのクライアントに設定できます。

詳細

Overreach

AI が 2,000 行を書きました。レビューに使える時間は 10 分です。

npm version license

Overreach は、まずどこを確認すべきかを知らせます。ログインフォームを依頼したところ、Stripe キー、チェックアウトエンドポイント、そして AI エージェントが無断で追加した cron ジョブを表示します。決定論的で、根拠に基づき、AI の主観はありません。

確認する

$ npx -y overreach demo

  Overreach — AI PR Review
  ─────────────────────────────────────────────────
  You asked: "add a login form to the settings page"
  5 files changed · 4 in scope · 1 outside scope

  Findings

  ✗ New environment variable: STRIPE_SECRET
    .env.example
  ✗ New API endpoint: /api/checkout
    src/app/api/checkout/route.ts
  ✗ Scheduled job added
    cron.config.ts
  ⚠ File outside scope: cron.config.ts
    cron.config.ts
  ⚠ Added dependency: stripe
    package.json

  Heads Up

  → New API route added but no test file updated
  → Dependencies changed but lockfile not updated
  → 3 source files changed but no tests updated

  ─────────────────────────────────────────────────
  5 findings · review carefully · deterministic

ログインフォームを依頼したところ、Overreach は決済システムを見つけました。マージする前に、これらのファイルを確認してください。

インストール

# Just run it — zero setup
cd your-project
npx -y overreach

これだけです。変更を自動検出し、AI に何を依頼したかを尋ね、レビューを表示します。設定ファイルも、覚える必要のあるフラグもありません。

または、恒久的にインストールします。

npm install -g overreach

# Pipe a diff with an explicit prompt
git diff | overreach --prompt "add user authentication"

# Install as a pre-commit hook
overreach init

API キーがなくても問題ありません。 キーがない場合、Overreach はプロンプトをオフラインで正規表現解析します。即時に実行され、無料で、完全に決定論的です。

対応ツール

  • Claude Code
  • Cursor
  • Codex
  • GitHub Copilot
  • Windsurf
  • Aider

プロンプトからコードを書くツールなら、どれでも使えます。Overreach がレビューするのはツールではなく、その出力です。

検出できること

想定外の変更(AI が依頼していないのに行ったこと)
チェック項目例
依存関係ログインフォームを依頼したのに stripe が追加された
環境変数.env に STRIPE_SECRET が追加された
API エンドポイント依頼していない /api/checkout ルート
スケジュールされたジョブcron ジョブやバックグラウンドタスクがひそかに追加された
ランタイムリスナーサーバー、WebSocket ハンドラー、process.on フック
スコープ外のファイルプロンプトで言及していないファイルが変更された
機能の肥大化依頼した範囲を超える新しい関数やクラス

すべての検出結果は決定論的です。プロンプトと差分を集合演算して導き出します。AI の主観はありません。「X を依頼したが、差分には Y も含まれており、Y は X に含まれていない」というだけです。

要確認(確認が必要と思われる項目)

Overreach は、開発者がレビュー中に見落としがちな、ファイル間の実用的な問題もスキャンします。

警告検出内容
マイグレーションのないスキーマ変更schema.prisma は変更されたが、マイグレーションが追加されていない
環境変数の不一致コードは process.env.FOO を使用しているが、.env に定義がない
テストのないルート新しい API ルートが追加されたが、テストファイルが更新されていない
テストがないソースファイルが 3 つ以上変更されているが、テストファイルには一切手が入っていない
ロックファイルのない依存関係package.json は変更されたが、package-lock.json がない
認証/ミドルウェアの変更セキュリティ上重要なファイルが変更された
ハードコードされたシークレットAPI キーやトークンがソースコードに直接記述された
大きなファイル1 つのファイルに 200 行以上追加されたため、分割が必要な可能性がある
未使用の新規ファイル新しいファイルが作成されたが、どこからもインポートされていない
技術的負債の追加2 つ以上のファイルに TODO/FIXME/HACK がある
ドキュメントのない APIAPI ルートが変更されたが、ドキュメントが更新されていない
孤立したスタイルCSS は変更されたが、コンポーネントは更新されていない
設定ファイルの乱立設定ファイルが一度に 3 つ以上変更された
インフラのみの変更Docker/CI は変更されたが、ソースコードは変更されていない

これらはスコープの肥大化ではありません。午前 2 時には忘れていて、本番環境で問題に気付くような項目です。

なぜ決定論的なのか

多くの AI コードレビューツールは、別の AI にコードを評価させます。つまり、主観や幻覚が入り、実行するたびに結果が変わります。

Overreach はそうしません。

3 段階のパイプラインを実行します。

  1. スコープを抽出 — 低コストな LLM 呼び出しでプロンプトを読み取り、許可された内容(ファイル、依存関係、環境変数、エンドポイント)を抽出します。または、LLM を完全に省略してゼロキー モードを使うこともできます。

  2. 差分を解析 — 正規表現ベースで抽出します。LLM は使いません。変更されたすべてのファイル、追加された依存関係、設定された環境変数、作成されたエンドポイントを検出します。数ミリ秒で実行されます。

  3. 比較 — actual − authorized = findings。純粋な集合演算です。差分に含まれていてプロンプトにはなかったものは、すべて検出結果になります。

ステージ 2 と 3 は純粋関数です。同じ入力なら、いつでも同じ出力になります。推論も、モデルの変動もありません。

CI ゲート

Overreach を GitHub Action として使用して、すべての PR で AI のスコープ逸脱をブロックします。

# .github/workflows/overreach.yml
- uses: Naveja00/Overreach@v1

予期しない変更が見つかった場合は終了コード 1 を返します。AI エージェントはこのチェックをスキップできません。

MCP サーバー(AI エージェント向け)

AI エージェントは、コミット前に自身の作業をチェックするために Overreach を使用できます。

# Claude Code
claude mcp add overreach -- npx -y overreach --serve

# Claude Desktop / Cursor — add to MCP config:
{ "mcpServers": { "overreach": { "command": "npx", "args": ["-y", "overreach", "--serve"] } } }

内部仕様

API キー(任意)

Overreach は AI プロバイダーを自動検出します。

プロバイダー環境変数
AnthropicANTHROPIC_API_KEY
OpenAI / 互換プロバイダーOPENAI_API_KEY
Ollama(ローカル)キー不要
CLI フラグ
overreach                          # Interactive mode (recommended)
overreach demo                     # Zero-key demo with sample diff
overreach init                     # Install as pre-commit hook

git diff | overreach --prompt "…"  # Pipe a diff with explicit prompt
overreach --diff file.diff --prompt "…"   # Read diff from file
overreach --scope scope.json --prompt "…" # Skip LLM, use pre-extracted scope
overreach --json                   # Machine-readable JSON output
overreach --serve                  # Start as MCP server
JSON 出力

構造化出力(CI、パイプ処理、インテグレーション)には --json を追加します。

{
  "scope": { "files_allowed": [], "features_allowed": [] },
  "actual": { "files_changed": [], "symbols_added": [] },
  "findings": [
    {
      "kind": "scope.env",
      "detail": "New environment variable STRIPE_SECRET not in authorized scope",
      "file": ".env.example",
      "severity": "high",
      "evidence": "STRIPE_SECRET"
    }
  ],
  "scope_creep_score": "HIGH",
  "blast_radius": {
    "warnings": [
      {
        "pattern": "route-no-test",
        "message": "New API route added but no test file updated",
        "files": ["src/app/api/checkout/route.ts"],
        "suggestion": "Add tests for the new endpoint"
      }
    ]
  }
}
検出の種類
種類重要度検出条件
scope.envHIGHプロンプトに記載されていない環境変数
scope.endpointHIGH認可なしで追加された API ルート
scope.cronHIGH追加されたスケジュール済みジョブ
scope.listenerHIGHランタイムリスナー(サーバー、WebSocket、process.on)
scope.depMEDIUM追加されたパッケージ依存関係
scope.fileMEDIUMプロンプトの範囲外で変更されたファイル
scope.featureLOW認可された機能に一致しない新しいシンボル
テレメトリ

Overreach は匿名の使用状況データを送信します。送信されるのはカウントと列挙値のみ(score、findings の件数、OS、バージョン)で、コード、プロンプト、ファイルパス、差分の内容は送信されません。初回のレビュー時に一度だけ通知が表示されます。いつでもオプトアウトできます。

export OVERREACH_TELEMETRY=0   # or DO_NOT_TRACK=1
テスト
npm test    # 241 deterministic assertions, zero API calls

ライセンス

MIT — 無料のオープンソースです。

リンク

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。