PatchWarden
Safe-Bifrost (PatchWarden) is a secure MCP bridge for AI coding agents that lets you plan, delegate, monitor, audit, and verify code changes through a structured tool interface — without exposing an unrestricted shell.
Task Management
Create, cancel, kill, retry, and wait for tasks delegated to local agents (OpenCode, Codex) with workspace confinement and command allowlists
Use built-in guarded templates (
inspect_only,feature_small,fix_tests, etc.) and pre-assess risk before executionRun full guarded task loops orchestrating create → wait → summary → audit with optional worktree isolation
Task Monitoring & Status
Poll task lifecycle, read structured results, diffs, and test logs
Get bounded safe summaries and real-time output tails with secret redaction
Diagnose stuck tasks and reconcile stale/orphaned runs
Auditing & Verification
Audit task outputs with 16+ deterministic checks cross-referencing agent claims with actual artifacts
Export evidence packs (
evidence.json,EVIDENCE.md) and read full task lineage/chain-of-custody
Workspace & Agent Inspection
Health checks for MCP catalog, watcher status, workspace readiness, and agent availability
Browse workspace files (sensitive paths blocked), read project policy, and get agent routing recommendations
Direct Editing Mode
Create sessions for AI to directly edit code via JSON patches (with SHA-256 validation), code search, allowlisted verification commands, and file sync — without a local agent
Finalize and audit direct sessions with safe bounded summaries
Goal & Multi-Task Orchestration
Manage multi-task Goal Sessions with subgoal dependencies, progress tracking, and handoff exports
Use isolated git worktrees per subgoal, with safe merge or discard options
Release Management
Verify release readiness across local, packed, published, GitHub, and CI stages (read-only HTTPS queries)
Run allowlisted pre-release preparation, verify remote facts (npm/GitHub/CI), and clean up artifacts (dry-run by default)
Tool Discovery
Search available tools by natural language, inspect metadata/schemas, and invoke discovered tools through a 10-check security gate
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PatchWarden save a plan for refactoring the database layer"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PatchWarden
让 ChatGPT 规划,本地 Agent 执行,但别把整台电脑直接交给它。
PatchWarden 把 ChatGPT 和 Codex CLI、Claude Code、OpenCode 等本地 Agent 连起来,只在你批准的工作区和验证边界内执行,并留下可检查的 Diff、验证和审计证据。
它不是通用远程 Shell,而是一条 受控、可验证、可审计的 Agent 执行通道。
下载最新 Windows 版本 · 快速开始 · 连接 ChatGPT · 安全边界
为什么需要 PatchWarden
直接让远程 AI 控制本地开发环境,最难的不是“能不能执行”,而是:
它到底能访问哪些目录?
能不能随便跑命令?
Agent 说“测试通过”时,有没有独立证据?
改了哪些文件,是否超出批准范围?
最终是谁、基于什么证据接受了这次修改?
PatchWarden 把这些问题放进执行链路本身:
ChatGPT
↓ 任务 + 约束
PatchWarden
↓ 工作区 / Agent / 命令边界
Local coding agent
↓
Workspace changes
↓
Verification + diff + audit + lineage
↓
Human acceptanceRelated MCP server: mcp-taskflow
你能得到什么
工作区边界:任务只能在配置的
workspaceRoot内运行。Agent 边界:只调用你本机已经安装并配置好的 Agent。
命令边界:验证命令必须匹配允许列表。
真实 Diff:不只相信 Agent 的自然语言总结。
独立验证:验证步骤和任务执行分开记录。
审计记录:保留 request / task / lineage / audit 状态。
人工验收:最终接受动作绑定到当前证据,而不是简单改一个 JSON 状态。
适合谁
如果你想:
在 ChatGPT 里规划和监督本地开发任务;
继续使用 Codex CLI / Claude Code / OpenCode 作为真正执行者;
又不想给远程模型一个无限制 Shell;
希望每次修改都有可复查证据;
PatchWarden 就是为这种工作流做的。
5 分钟快速上手
1. 下载
从 Latest Release 下载 Windows x64 安装版或便携版。
当前安装包若未代码签名,Windows SmartScreen 可能提示未知发布者。请先用同一 Release 中的 SHA-256 校验文件核对安装包。
PowerShell:
Get-FileHash .\PatchWarden-Setup-*-x64.exe -Algorithm SHA2562. 准备本地 Agent
至少安装并登录一个:
Codex CLI
Claude Code
OpenCode
从源码或 npm 运行时需要 Node.js 20+;建议同时安装 Git 以生成可靠 Diff。
3. 选一个专用工作区
不要把磁盘根目录、用户主目录、桌面、下载目录直接作为 workspaceRoot。
建议给 PatchWarden 一个专门的项目目录,只放你明确允许它操作的仓库。
4. 检测 Agent
打开 PatchWarden Desktop:
设置 → 本地 Agent 与模型至少一个 Agent 应显示可调用。如果 CLI 尚未登录,先在独立终端完成登录,再回到 PatchWarden 重新检测。
5. 确认本地健康状态
在 开始使用 / 高级控制台 中确认工作区、Agent 和 Core 服务正常。
到这里,即使还没连接 ChatGPT,PatchWarden 的本地执行边界也已经可以先单独验证。
连接 ChatGPT
ChatGPT Web 需要通过当前 OpenAI 支持的安全 MCP Tunnel / custom app 连接方式访问本地 PatchWarden。
典型流程:
准备
tunnel-client;创建名为
PatchWarden的专用 Core Tunnel;使用具备 Tunnels Read + Use 权限的专用 runtime key;
在 PatchWarden 的 设置 → MCP 与隧道 中配置并验证;
在 ChatGPT Developer mode 中添加 PatchWarden,Authentication 选 No Auth;
保留适合你工作区风险等级的确认策略。
连接时请保持这些边界:
这个 runtime key 对应
CONTROL_PLANE_API_KEY,不是普通OPENAI_API_KEY;OPENAI_ADMIN_KEY可以用于管理 Tunnel,但不应作为长期运行密钥;不要把 runtime key 填进 ChatGPT 的 Authentication 字段;
Direct 是可选的第二 Tunnel,只有需要 Direct 工具时才创建;
Direct 不是只读通道。它提供受工作区边界、敏感路径和确认策略约束的文件编辑能力(包括补丁、创建、移动和删除);只有明确需要时才启用,并保留人工确认;
如果直接启用本地 HTTP MCP(不经过 stdio Tunnel),必须先配置
PATCHWARDEN_OWNER_TOKEN。匿名/healthz只返回最小状态,详细 health 与/mcp都要求 owner token。
Tunnel runtime key 是运行连接所需的本地秘密,不要写进 README、Prompt、截图或 Git 仓库。
连接完成后,先做只读检查:
请调用 PatchWarden:
1. health_check
2. list_agents
只返回服务状态和可调用 Agent,不修改任何文件。第一个可审计任务
建议第一次只在可丢弃的 Demo 仓库中测试:
请通过 PatchWarden 执行一次受控任务:
- 只在我指定的 Demo 工作区内工作;
- 使用 invocation_ready=true 的本地 Agent;
- 只修改我明确允许的文件;
- 只运行项目中真实存在且已允许的验证命令;
- 禁止 commit、push、tag、publish、release、deploy;
- 最后返回 Diff、verification、audit 和 lineage 状态。不要只看 Agent 说“完成了”
一次可靠的任务结果至少应该能回答:
证据 | 你要确认什么 |
| 这次工作能否唯一追踪 |
changed files | 是否只改了批准范围 |
verification | 真实验证命令是否通过 |
out-of-scope changes | 是否为 |
audit | 独立审计是否接受 |
local attestation | 是否用 |
final lineage | 整条工作流是否完整结束 |
审计通过后,任务通常仍是 ready_for_review。权威验收需要在本地 TTY 执行:
patchwarden-attest <task_id> --acceptPatchWarden 的目标不是让 Agent “更会说自己做对了”,而是让你能检查它到底做了什么。
安全边界
PatchWarden 的核心原则:能力最小化 + 证据优先。
工作区必须显式配置;
不把任意本机路径默认暴露给远程模型;
验证命令受允许列表限制;
Direct 是可选的受限编辑能力,不是只读验证通道;它应保持更严格的工作区边界、敏感路径和确认策略,未启用时不要在提示词里引用它;
本地 HTTP MCP 的敏感接口要求 owner token;
本地 HTTP MCP 的详细 health 与
/mcp都要求PATCHWARDEN_OWNER_TOKEN;日志、截图和诊断不应暴露 API Key / Tunnel ID /账号秘密;
最终人工 attestation 绑定当前证据摘要,而不是只相信任务目录里的状态文件;
对高风险操作,应继续保留人工确认。
PatchWarden 不是什么
不是通用远程桌面;
不是无限制远程 Shell;
不替代 Codex / Claude Code / OpenCode;
不把所有本地文件自动暴露给 ChatGPT;
不把 Agent 的自然语言“测试通过”当成最终证据;
不应该用来绕过你原本的本地安全策略。
支持的工作流
PatchWarden 当前重点围绕:
Plan in ChatGPT
↓
Execute with a local coding agent
↓
Verify independently
↓
Audit actual changes
↓
Accept with evidence它更适合“我已经知道要做什么,现在需要一个受控执行层”,而不是替代完整的需求分析或产品决策流程。
常见排障
Agent 检测到了但不可调用
在独立终端直接运行对应 CLI,先完成登录和基础模型配置,再回到 PatchWarden 重新检测。
Watcher / Core 状态异常
先通过高级控制台执行正常的启动/重启流程。不要直接强杀未知 PID。
ChatGPT 无法连接
先确认本地 PatchWarden 健康,再检查 Tunnel 是否连接到正确 profile,以及 ChatGPT 侧是否使用了当前支持的 MCP/custom app 连接方式。
验证命令被拒绝
检查它是否真的存在于项目中,并且是否匹配 PatchWarden 的允许命令配置。不要为了让任务通过而临时放宽为任意 Shell。
开发与审计理念
PatchWarden 更关心这些问题:
执行权属于谁?
工作区边界在哪里?
结果能不能独立验证?
证据是否能追溯到这一次具体任务?
人工最终接受是否绑定到当前证据?
如果这些边界比“少一次确认”更重要,这个项目就有价值。
License
MIT. See LICENSE.
PatchWarden is an independent open-source project and is not affiliated with or endorsed by OpenAI, Anthropic, or OpenCode.
Available Tools
71 toolsaccept_subgoalA
Accept a subgoal after all associated tasks are accepted by audit_task. Supports both legacy status=accepted and done_by_agent with acceptance_status=accepted.
Inputs: goal_id (required), subgoal_id (required).
apply_patchADestructive
Apply JSON patch operations to a file within a Direct session's repo_path. Validates expected_sha256 before applying. Supports replace_exact, insert_before, insert_after, replace_whole_file.
Inputs: path (required), operations (required), session_id (required), expected_sha256 (required), +1 more.
audit_sessionA
Independently audit a Direct session's changes. Performs 16 deterministic checks and returns pass/warn/fail decision. Requires session to be finalized first.
Inputs: session_id (required).
audit_taskA
Independently audit a task's outputs. Verifies status, result.md, test.log, git.diff, repo_path consistency, cross-references agent claims with package.json scripts, and flags unverified release/publish claims. Evidence-backed failures, possible heuristic false positives, and manual-verification items are returned separately. Writes independent-review.md to the task directory.
Inputs: task_id (required).
cancel_taskA
Request graceful cancellation. The runner that owns the child process performs termination; the MCP server never kills a PID read from task files.
Inputs: task_id (required).
check_release_gateA
v1.0.0: Verify release readiness across five sequential stages: local_ready → packed_ready → published_verified → github_release_verified → ci_verified. Remote stages (published/github/ci) query npm registry and GitHub API via node:https read-only GET; network errors return 'not_checked' (not 'failed'). Never claims release complete before published_verified passes. Does not execute shell commands for remote queries.
Inputs: repo_path (required), target_stage (required), branch, version, +2 more.
create_direct_sessionB
Create a Direct editing session for ChatGPT to apply patches directly. Requires enableDirectProfile: true in config.
Inputs: repo_path (required), title, expected_changes.
create_fileADestructive
Create a new bounded UTF-8 text file inside an active Direct session. The target and its parent are revalidated, sensitive content is blocked, and existing targets are never overwritten.
Inputs: path (required), content (required), session_id (required), review_id.
create_goalA
v0.8.0: Create a Goal Session for managing a multi-task objective with subgoal dependencies. Generates a structured directory under .patchwarden/goals/{goal_id}/ with GOAL.md, GOALS.md, and goal_status.json. Use list_goals to enumerate existing goals and read_goal to inspect details.
Inputs: title (required), repo_path (required), goal_description (required).
create_subgoal_taskA
v0.8.0: Create a subgoal within a Goal Session and immediately launch an associated task. Atomically: addSubgoal → create_task → linkTask → mark subgoal running. The subgoal depends_on other subgoals (by id) which must be accepted before suggest_next_subgoal returns it.
Inputs: goal_id (required), repo_path (required), subgoal_title (required), goal, +15 more.
create_taskA
Create a repo-scoped task from exactly one source. For ChatGPT, prefer the guarded inspect_only, feature_small, or fix_tests template when it fits. A stale watcher preserves the task but returns execution_blocked and directs the client to health_check; otherwise call wait_for_task until terminal. Use execution_mode=assess_only to pre-assess risk and get an assessment_id without creating a task; then invoke the returned next_tool_call using only execution_mode=execute and the full assessment_id.
Inputs: goal, agent, plan_id, template, +12 more.
delete_fileADestructive
Delete one bounded regular text file inside a Direct session. Requires the current SHA-256 and confirm_delete=true; directories and recursive deletion are unsupported.
Inputs: path (required), session_id (required), confirm_delete (required), expected_sha256 (required), +1 more.
diagnose_taskA
v0.7.0: Diagnose a running or collecting_artifacts task using multi-signal evidence (heartbeat age, log freshness, child PID liveness, watcher ownership, artifact presence). Returns a conservative diagnosis (active_running, stale_running, possibly_stale_running, orphaned_running, artifact_collection_stuck, done_candidate, unknown, terminal) with confidence level and safe_actions. Never relies on a single signal; refuses to call PID-alive tasks 'active' when other signals are stale (PID reuse protection). Read-only — does not modify task state.
Inputs: task_id (required), include_logs.
discard_worktreeA
v1.0.0: Discard an isolated git worktree safely. Removes the worktree (git worktree remove --force), deletes its branch, and archives status as 'discarded'. Use when a subgoal is rejected or abandoned. All paths pass guardWorkspacePath + sensitiveGuard.
Inputs: repo_path (required), worktree_id (required).
discover_toolsA
v0.7.1: Search candidate tools by natural-language query (Chinese or English). Returns compressed summaries with risk level and schema digest. Filters by profile/mode/riskCeiling. High-risk tools (command/release/credential_sensitive) are hidden by default unless includeHighRisk=true. Read-only — never invokes tools.
Inputs: query (required), mode, profile, maxResults, +2 more.
explain_toolA
v0.7.1: Expand a single tool's metadata — title, summary, risk level, tags, aliases, profiles, modes, schema digest, and optionally the full inputSchema. Use after discover_tools to understand a specific tool before calling it. Read-only.
Inputs: name (required), includeSchema.
export_goal_reportB
Export a structured final report for a Goal session, aggregating subgoal completion, task evidence, and risk summary.
Inputs: goal_id (required).
export_handoffA
v0.8.0: Export a handoff.md document for transferring a Goal Session to a new conversation. Includes current goal, completed/pending subgoals, recent diff/test results, blockers, next steps, and risks. Writes to .patchwarden/goals/{goal_id}/handoff.md.
Inputs: goal_id (required).
export_task_evidence_packA
Export a bounded evidence pack for a run_task_loop lineage. Writes evidence.json and EVIDENCE.md without stdout, stderr, full logs, full diff, or sensitive file contents.
Inputs: lineage_id (required), max_items.
finalize_direct_sessionA
Finalize a Direct session: capture after snapshot, generate diff/summary/change artifacts, mark session as finalized. Must be called before audit_session.
Inputs: session_id (required).
get_diffB
Read task diff evidence, or return structured availability and watcher evidence while it is not ready.
Inputs: task_id (required).
get_planB
Read a saved plan by its plan_id.
Inputs: plan_id (required).
get_project_policyA
Read the bounded effective .patchwarden/project-policy.json summary for a repository. Missing policy returns safe defaults. Project policy never expands PatchWarden command allow-lists, workspace confinement, sensitive-path blocking, or watcher/audit boundaries.
Inputs: repo_path (required).
get_resultA
Read result.md, or return structured availability and watcher evidence while the task is not terminal.
Inputs: task_id (required).
get_result_jsonB
Read the structured result.json for deterministic task acceptance.
Inputs: task_id (required).
get_task_lineageA
Read a bounded safe summary for a run_task_loop lineage. Does not return full logs, diffs, stdout, stderr, or markdown artifacts.
Inputs: lineage_id (required), max_items.
get_task_log_tailA
Read the last N lines of a task log file (stdout/stderr/test/verify) with automatic secret redaction. Default 80 lines, max 200. Always returns tail only — never the full file. Use this instead of read_workspace_file to avoid triggering platform content filters on log output.
Inputs: file (required), task_id (required), lines, redact.
get_task_progressA
Read progress.md for task phases and the most recent heartbeat/current command.
Inputs: task_id (required).
get_task_statusB
Check task status, execution phase, watcher health, pending reason, current command, timeout, and change evidence.
Inputs: task_id (required).
get_task_stdout_tailA
Read the last N lines of agent stdout/stderr. Reads from real-time stdout.log/stderr.log during execution, falls back to result.md after completion. Works on pending, running, and completed tasks. Default 80 lines.
Inputs: task_id (required), lines.
get_task_summaryA
Return structured acceptance evidence. Use view=compact first for bounded counts and risk excerpts; use standard only when full changed-file and log-tail detail is required.
Inputs: task_id (required), view, max_items.
get_test_logC
Read test.log, or return structured availability and watcher evidence while it is not ready.
Inputs: task_id (required).
health_checkARead-onlyIdempotent
Check MCP catalog consistency, watcher freshness/supervisor state, workspace readiness, and configured agents. Agent availability is executable-only unless an explicit provider probe is requested. Use detail=self_diagnostic for expanded read-only evidence.
Inputs: detail.
import_speckit_tasksB
Import Spec Kit tasks into a Goal session as subgoals, mapping task files to scope hints and acceptance criteria.
Inputs: goal_id (required), spec_kit_json (required).
invoke_discovered_toolA
v0.8.1: Invoke a previously discovered tool using a discoveryToken. The token must be obtained from discover_tools first. Enforces 10 security checks: token validity, toolName match, profile allowance, risk ceiling, sensitive path guard, assessment requirement, command whitelist, release confirmation, credential block, and invocation logging. Cannot call itself recursively.
Inputs: toolName (required), arguments (required), discoveryToken (required), assessmentId.
kill_taskA
Request immediate termination of a pending or running task. The runner validates and kills only the child process it owns.
Inputs: task_id (required).
list_agentsA
List agents from the active runtime config, verify executable and model-argument wiring, and report the config path used by this process. provider_status remains not_checked because this read-only check does not contact a model provider or test account balance.
Inputs: no named parameters.
list_goalsA
v0.8.0: List all Goal Sessions with completion summaries. Returns goal_id, title, status, subgoal counts, and last update time. Sorted by updated_at descending.
Inputs: no named parameters.
list_tasksB
List recent tasks with status/repo/active/history filters plus watcher state and computed pending reasons. Archived history is excluded by default.
Inputs: limit, status, repo_path, active_only, +1 more.
list_workspaceARead-onlyIdempotent
List files and directories within the workspace (sensitive files excluded).
Inputs: path.
merge_worktreeA
v1.0.0: Merge an isolated git worktree's changes back into the main workspace. Use after a subgoal task (created with isolate_worktree=true) is accepted. Updates worktree_status.json to status='merged'. Merge failures do NOT delete the worktree (preserved for manual inspection).
Inputs: repo_path (required), worktree_id (required).
mkdirADestructive
Create one new directory level inside an active Direct session. Parent directories must already exist; linked, sensitive, internal, dependency, release, and build-output paths remain blocked.
Inputs: path (required), session_id (required), review_id.
move_fileADestructive
Move one bounded regular text file within a Direct session. Requires the current source SHA-256 and never overwrites the target.
Inputs: session_id (required), source_path (required), target_path (required), expected_source_sha256 (required), +1 more.
read_goalA
v0.8.0: Read full Goal Session details including GOAL.md content, goal_status.json, and all subgoals with dependency info. Use after list_goals to inspect a specific goal.
Inputs: goal_id (required).
read_workspace_fileARead-onlyIdempotent
Read a file within the workspace. Sensitive files (secrets, keys, tokens) are blocked. In Direct mode (with session_id), reads are scoped to the session's repo_path and return sha256.
Inputs: path (required), session_id.
recommend_agent_for_taskA
Return a bounded read-only agent routing recommendation for a repo-scoped task. Does not start an agent, create a task, or read logs.
Inputs: goal (required), repo_path (required), template, risk_hint, +1 more.
reconcile_tasksA
v0.7.0: Scan stale running/collecting_artifacts tasks and either report or safely fix them. report_only (default) returns a diagnosis report without modifying state. safe_fix additionally writes high-confidence status transitions (failed_stale/orphaned/done_by_agent) atomically with backup (status.json.bak), audit fields, and an appended reconcile.log. Never touches tasks still owned by an active watcher; never applies medium/low confidence fixes.
Inputs: mode, max_age_minutes, include_done_candidates.
reject_subgoalA
Reject a subgoal with a reason. Allowed from any non-terminal status (ready/queued/running/done_by_agent/needs_fix). Records rejected_reason in goal_status.json.
Inputs: reason (required), goal_id (required), subgoal_id (required).
release_checkA
v1.3.0: Run a bounded release readiness check by wrapping the existing release gate. Local stages use existing guarded release-gate commands; remote stages are read-only. Does not publish, push, tag, or create a GitHub Release.
Inputs: repo_path (required), branch, version, github_repo, +2 more.
release_cleanupA
v1.3.0: Clean up release artifacts using project-policy auto_cleanup rules. Defaults to dry_run=true. Non-dry-run cleanup only removes low-risk ignored/untracked artifacts under repo_path and writes an audit summary.
Inputs: repo_path (required), dry_run, patterns.
release_prepareA
v1.3.0: Run project-policy release preparation commands only when each command is already accepted by the existing PatchWarden command guard. Returns command status only, never stdout/stderr. Does not publish, push, tag, or create a GitHub Release.
Inputs: repo_path (required), timeout_seconds, required_commands.
release_verifyA
v1.3.0: Verify npm/GitHub/CI release facts with read-only HTTPS requests. Does not run local shell commands and does not publish, push, tag, or create a GitHub Release.
Inputs: repo_path (required), branch, version, github_repo, +1 more.
request_direct_reviewARead-only
Request a policy-bound review for the exact Direct operation to be performed. In enforce mode, pass the returned review_id unchanged to the matching operation before it expires.
Inputs: session_id (required), operation_type (required), path, command, +8 more.
retry_taskB
Create a new task with the same plan, agent, repo_path, and test_command as an existing task. The original task is unchanged.
Inputs: task_id (required).
run_direct_verification_bundleADestructive
Run multiple allowlisted Direct verification commands sequentially and return only bounded structured status. Omits stdout/stderr tails and log content.
Inputs: commands (required), session_id (required), review_id, timeout_seconds.
run_task_loopA
Start a guarded PatchWarden task loop by composing create_task, wait_for_task, safe summaries, and audit_task. By default it returns request_id, lineage_id, and the created main task immediately while Core continues the loop in the background; follow with wait_for_task and get_task_lineage. It does not bypass the watcher, command allow-list, workspace confinement, or confirmation boundaries.
Inputs: goal (required), repo_path (required), verify_commands (required), agent, +17 more.
run_verificationBDestructive
Run a whitelisted verification command within a Direct session. Command must be in the Direct allowlist.
Inputs: command (required), session_id (required), review_id, timeout_seconds.
safe_auditA
Run audit_task and return only bounded structured audit evidence without full review markdown.
Inputs: task_id (required), max_items.
safe_audit_direct_sessionA
Audit a Direct session and return only bounded structured evidence without verification stdout/stderr tails.
Inputs: session_id (required), max_items.
safe_diff_summaryA
Return changed-file counts and bounded path metadata without returning diff content.
Inputs: task_id (required), max_items.
safe_direct_summaryARead-onlyIdempotent
Return a low-noise Direct session summary without diff content or verification stdout/stderr tails.
Inputs: session_id (required), max_items.
safe_finalize_direct_sessionA
Finalize a Direct session and return only bounded structured evidence, omitting diff and verification log content.
Inputs: session_id (required), max_items.
safe_resultA
Return a low-noise structured task result summary without full logs, markdown, or diff content.
Inputs: task_id (required), max_items.
safe_statusA
Return minimal task lifecycle status without exposing diff, log content, file contents, or sensitive paths. Use this when only task state is needed and content-bearing tools may be blocked by upper-layer security.
Inputs: task_id (required).
safe_test_summaryB
Return a compact verification summary for a task without stdout/stderr or test log content.
Inputs: task_id (required).
save_planA
Save an execution plan — ChatGPT writes the plan, PatchWarden stores it for local agent execution. Supports plan_ref to load a plan file already placed inside .patchwarden/plans.
Inputs: title, content, plan_ref.
search_workspaceARead-onlyIdempotent
Search file contents (grep-like) within a Direct session's repo_path. Skips .git, node_modules, dist, release, and sensitive files.
Inputs: query (required), session_id (required), max_results, include_globs, +2 more.
suggest_next_subgoalA
v0.8.0: Suggest the next executable subgoal based on the dependency graph. Returns a ready subgoal whose dependencies are all accepted. If none ready, returns blocked_by list. Use to drive goal-directed task sequencing.
Inputs: goal_id (required).
summarize_goal_progressB
Summarize goal completion: counts by status (accepted/rejected/queued/running/ready/needs_fix/done_by_agent), completion_rate, blocked_subgoals, and actionable risks.
Inputs: goal_id (required).
sync_fileADestructive
Copy a file from source to target within the same Direct session repo. This legacy operation is outside the first Direct review MVP and is disabled when directReview.mode=enforce. Both paths must be inside the session repo_path.
Inputs: session_id (required), source_path (required), target_path (required), expected_source_sha256, +1 more.
wait_for_taskB
Long-poll a task for up to 30 seconds. If continuation_required=true, call wait_for_task again immediately and do not finish the assistant turn. Terminal responses include get_task_summary acceptance evidence.
Inputs: task_id (required), wait_seconds, timeout_seconds.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 71 tools
Multiple tools serve near-identical purposes with subtle differences (e.g., get_task_status, get_task_progress, get_task_summary, safe_status, safe_result) or are distinguished only by output verbosity. The safe_* family duplicates many base tools, and release_check/release_verify/check_release_gate overlap heavily, making selection confusing.
Most tools follow a consistent verb_noun snake_case pattern (list_tasks, create_goal, release_prepare), and the safe_ prefix is used consistently. Minor deviations include bare mkdir, sync_file, and versioned tags in descriptions, but overall naming is predictable.
71 tools is an extreme count for any MCP server, even a comprehensive one. This is well beyond the 15-tool 'well-scoped' threshold and qualifies as overbuilt per the calibration.
Despite the excessive size, the server covers task lifecycle (create/cancel/retry/audit), goal management, release gates, worktree isolation, and direct session editing. The main gaps are lack of task update/delete and goal deletion, but the surface is otherwise comprehensive for its stated purpose.
Maintenance
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides AI coding agents with AST-accurate, context-budget-aware codebase querying, safety gates, and team policy integration via structured tools and a local plugin layer.112 npm4MIT
- AlicenseBqualityDmaintenanceA local MCP server that gives AI agents structured task planning, execution tracking, and guided research workflows.1610 npmMIT
- AlicenseNot gradedqualityBmaintenanceA self-hosted MCP server that enables AI coding agents to read, edit, search, and run code in local projects with human review loops and policy controls.MIT
- AlicenseAqualityBmaintenanceMCP server that enables a coordinator AI agent to spawn, control, and supervise local coding agents with interactive gating for high-risk operations.1017 npmMIT