Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/keunsy/cursor-feedback-gateWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/keunsy/cursor-feedback-gate/feedbackgate)<a href="https://agentmods.dev/rules/keunsy/cursor-feedback-gate/feedbackgate"><img src="https://agentmods.dev/badge/rules/keunsy/cursor-feedback-gate/feedbackgate/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/keunsy/cursor-feedback-gate/feedbackgate"><img src="https://agentmods.dev/badge/rules/keunsy/cursor-feedback-gate/feedbackgate.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01267 | $0.01267 |
| Opus 5.5 | $0.00507 | $0.00507 |
| Sonnet 5.5 | $0.00253 | $0.00253 |
| Haiku 4.5 | $0.00127 | $0.00127 |
Grade A, and why
FeedbackGate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 91 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Feedback Gate Protocol
核心规则
完成用户请求后,禁止直接结束回复。必须调用 feedback_gate_chat MCP 工具打开弹窗,等待用户反馈。只有用户在弹窗中回复 "TASK_COMPLETE"、"Done" 等完成信号后才可结束。
⚠️ 内容分发原则(最常见的误用)
Cursor 主聊天窗口是主要回复通道,Feedback Gate 弹窗只是确认关卡。
- ✅ 主回复(Cursor 聊天窗口):所有工作输出、分析结果、代码变更说明、命令执行结果、详细解释。
- ✅ 弹窗 message:1-2 句话的简短摘要 + 询问是否继续/完成。
- ❌ 绝对禁止:把完整工作结果、代码块、日志输出、长段落放进弹窗 message。
正确示例
# 主回复中:
已完成数据库迁移,新增 users 表,修改了 3 个文件...(完整内容)
# 弹窗 message:
"已完成数据库迁移。需要其他修改吗?"
错误示例
# 主回复中:(空或只有一句话)
# 弹窗 message:
"已完成数据库迁移。以下是变更详情:\n1. 新增 users 表...\n2. 修改了 migration.sql...\n3. 更新了 schema.prisma...\n..."
判断标准:弹窗 message 不应超过 100 字。如果超过,说明内容应该在主回复中。
工作流程
- 执行任务:正常完成用户请求(编码、分析、工具调用等)。
- 在主回复中输出完整结果:所有工作内容写在 Cursor 主聊天窗口。
- 打开 Feedback Gate:调用
feedback_gate_chat,仅传入简短摘要(≤100 字)。 - 处理反馈:收到用户弹窗回复后继续执行,然后再次调用
feedback_gate_chat。 - 循环直到完成:重复步骤 3-4,直到用户发送完成信号。
工具调用格式
- MCP Server:
user-feedback-gate - Tool Name:
feedback_gate_chat - 调用方式:
CallMcpTool(server="user-feedback-gate", toolName="feedback_gate_chat", arguments={...}) - 绝不假设工具不可用。如果调用报错,重试一次后再告知用户。不要因为"找不到"而跳过。
CallMcpTool:
server: "user-feedback-gate"
toolName: "feedback_gate_chat"
arguments:
message: (≤100字的简短摘要 + 提问,如"已完成XX。需要调整吗?")
title: "Feedback Gate" (可选)
context: (可选,用于内部追踪,不展示给用户)
session_id: (首次调用时生成一个随机 UUID,后续所有 re-entry 调用复用同一个值)
workspace_path: (当前项目的绝对路径)
session_id 规则
- 首次调用:生成一个 UUID(如
crypto.randomUUID()或类似方式),作为session_id传入。 - 后续所有调用:复用同一个
session_id,包括 [WAITING] 后的 re-entry 和后续新任务的 feedback gate 调用。 - 一个对话 = 一个 session_id,整个对话生命周期不变。不同的 Cursor agent chat 使用不同的 session_id。
- ⚠️ session_id 是插件在同一个 Cursor 窗口内区分对话的唯一依据(一个窗口只有一个 MCP 进程,PID 无法区分窗口内的多个对话)。
- 换了 session_id = 插件认为这是另一个对话 → 会开一个新 Tab,原对话的排队消息不会送到新 Tab。
- 只有真正的新对话(用户新开的 chat)才允许生成新 UUID;同一个对话里任何时候都不要换。
约束
- 每次回复结束前必须调用此工具,无例外。
- 如果工具不可用,告知用户 MCP 服务器可能未运行。
- 运行整个应用(Web 服务器、长期进程等)前需先征得用户确认。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +8 lines · +244 tokens per session 6af359e0d141
- 2mo ago First seen · 83 lines · 1,023 tokens per session scan A 0c6975953f30
FeedbackGate is a cursor rule published in the GitHub repository keunsy/cursor-feedback-gate (16 stars, last pushed 1mo ago), licensed MIT. It adds 1,267 tokens to every session, about $0.0051 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.
prefer-assertions-over-defensive-checks
Prefer assertions over defensive checks when data is guaranteed to be valid.
prefer-direct-imports-over-module-mocks
Prefer extracting a testable core over vi.mock / vi.resetModules when unit tests need to reach production logic entangled with config, env, or singletons.
config-validation-and-normalization
Config validation and normalization responsibilities (defineConfig normalizes, the orm section schema validates and resolves paths, the loader reports per-section diagnostics).