Over-Reach Detector

io.github.choreoatlas由 GitHub 帳號 choreoatlas 發布v0.0.6更新於 Oct 24, 2026

Detect when AI code changes exceed declared task scope (MCP server).

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

稽核 AI 編碼代理:比對宣告的工作範圍與實際改動的檔案,並回報越界情況。

可以做什麼
  • 依宣告範圍檢查變更:傳入宣告的檔案 glob、宣告的類別(tests、docs、infra、config、code)以及實際修改的檔案清單。
  • 取得包含 in_scope、over_reach 或 empty 狀態的報告,以及越界檔案與推斷出的越界類別。
  • 報告可選擇 JSON 或 markdown 格式輸出。
  • 除 MCP 伺服器外,也可透過命令列或 Python 直接呼叫同一套檢查邏輯。
適用情境
當 AI 編碼代理在程式碼儲存庫中工作時,用來快速、可重複地確認它是否只改動了任務允許的檔案與類別,例如在審閱變更前,或作為代理工作流程中的揭露步驟。
執行需求
以 Python 套件形式透過 stdio 在本機執行(PyPI 上的 over-reach-detector,可用 uvx 執行),需在代理的 MCP 設定中註冊啟動指令。未宣告需要帳號、API 金鑰或環境變數。
安裝前請注意
它是稽核與揭露工具,不是沙箱也不是攔截器:不會阻止檔案寫入,也不會還原、核准或阻擋變更,執行與人工複核仍由呼叫方負責。範圍比對採用 fnmatch glob 且偏向 Python,結果取決於宣告範圍是否準確。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Over-Reach Detector,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Over-Reach Detector (MCP server)

Detect and report when AI coding agents change files outside their declared task scope. Designed to plug into Cursor, Claude Code, and other MCP-compatible AI coding agents via the standard stdio transport.

Compares two things:

  1. Declared scope — the files (as fnmatch globs) and categories (tests, docs, infra, config, code) the task is allowed to touch.
  2. Actual diff — the files the AI actually modified.

If the actual diff exceeds the declared scope, the tool returns status=over_reach and lists the offending files and categories.

What this tool does and does not do

over-reach-detector is an audit/disclosure tool, not a sandbox and not a blocker.

It compares a declared task scope with the actual files/categories changed by an AI coding agent. If the actual changes exceed the declared scope, it reports that mismatch.

It does not prevent file writes by itself. It does not decide whether to revert, approve, or block a change. The caller remains responsible for enforcement, rollback, or human review.

Install

From PyPI:

bash
pip install over-reach-detector

From source:

bash
git clone https://github.com/choreoatlas/over_reach_detectorcd over_reach_detectorpip install -e .

Quick start

Run all tests: python -m pytest -v

Try the CLI directly: python -m over_reach_detector.detector --input fixtures/example_pr_1.json --format markdown

Use as MCP server

Start the server (stdio transport): over-reach-detector (or python -m over_reach_detector.server from source)

Register with your AI agent:

  • Cursor: in ~/.cursor/mcp.json, add (after pip install over-reach-detector):
json
{  "mcpServers": {    "over-reach-detector": {      "command": "over-reach-detector"    }  }}

Dev / from source: use "command": "python", "args": ["-m", "over_reach_detector.server"] (run from repo root).

  • Claude Code: after pip install over-reach-detector, run claude mcp add over-reach-detector over-reach-detector (writes to ~/.claude.json). Dev / from source: claude mcp add over-reach-detector /absolute/path/to/python -m over_reach_detector.server.

The tool

check_scope_tool takes:

  • declared_files: list of fnmatch globs (e.g. ["docs/*.md", "tests/*.py"])
  • declared_categories: subset of ["tests", "docs", "infra", "config", "code"]
  • actual_files: list of file paths the AI modified
  • output_format: "json" (default) or "markdown"

Returns a report with:

  • status: in_scope (within declared scope) | over_reach (reported mismatch) | empty
  • file_overreach: files not matching any declared glob
  • category_overreach: inferred categories outside the declared set

Scope discipline

Current scope: CLI + MCP stdio server + 1 tool. Python only. fnmatch-based globs.

Out of scope (forbidden): code quality review, security audit, completeness governance, languages other than Python, multi-tool MCP servers, HTTP/SSE transport, GitHub Actions integration. These are deliberately deferred to later versions or never.

Example usage

Call check_scope_tool directly from Python (same logic the MCP server exposes):

python
import jsonfrom over_reach_detector import server
result = server.check_scope_tool(    declared_files=["docs/*.md"],    declared_categories=["docs"],    actual_files=["docs/a.md", "scripts/extra.py"],    output_format="json",)
report = json.loads(result)print(report["status"])          # "over_reach"print(report["file_overreach"])  # ["scripts/extra.py"]

License

MIT — see LICENSE.

來源:README.md,提交 c72bc0f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.0.6最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分