You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cursor's IDE/Agent auto-run permission surface (.cursor/permissions.json) was materially expanded during 2026-05/06 by the Auto-review run mode and the SDK's local.autoReview routing, and Bugbot's .cursor/BUGBOT.md code-review instruction files remain an actively developed surface. rulesync supports neither: permissions covers only the CLI's .cursor/cli.json, and cursor is absent from the checks feature.
Recent Releases
Source: cursor.com/changelog (paginated at /changelog/page/N) plus the official docs.
Cursor Router — 2026-07-22 — changelog — model routing; dashboard-controlled, no repo config file.
Upstream: ~/.cursor/permissions.json and <workspace>/.cursor/permissions.json with mcpAllowlist: string[], terminalAllowlist: string[], and autoRun: { allow_instructions: string[], block_instructions: string[] }. JSONC is supported; a key present in the file "replaces the corresponding IDE allowlist entirely", and per-user and per-repo arrays are concatenated. — permissions reference. Materially expanded in this research window by Auto-review run mode (v3.6, 2026-05-29) and the SDK update routing local.autoReview through permissions.json (2026-06-04).
rulesync: project + global for the CLI surface only. src/features/permissions/cursor-permissions.ts writes .cursor/cli.json / .cursor/cli-config.json with permissions.{allow,deny}Type(pattern) tokens plus a cursor override carrying approvalMode / sandbox. unsupported for .cursor/permissions.json — grep -rn "permissions.json|autoRun|mcpAllowlist|terminalAllowlist" src/ returns no Cursor adapter, and the dry-run emits only .cursor/cli.json (project) and .cursor/cli-config.json (global).
Upstream: "Create .cursor/BUGBOT.md files to provide project-specific context for reviews. Bugbot always includes the root .cursor/BUGBOT.md file and any additional files found while traversing upward from changed files." Nested per-directory BUGBOT.md files are supported. — Bugbot docs.
rulesync: unsupported. The checks feature registry toolCheckFactories (src/features/checks/checks-processor.ts) contains only amp and hermesagent, and getToolTargets derives from that map, so cursor is absent from the checks column. No occurrence of BUGBOT anywhere under src/.
Proposed Follow-up
Add a CursorIdePermissions adapter emitting .cursor/permissions.json at project and global scope. Derive mcpAllowlist from canonical mcp allow rules and terminalAllowlist from canonical bash/shell allow rules; expose autoRun.allow_instructions / autoRun.block_instructions through a cursor-scoped override block in .rulesync/permissions.jsonc, since they are free-form natural-language hints with no canonical category → pattern → action equivalent. Because upstream treats a present key as fully replacing the IDE allowlist, the merge semantics need an explicit decision. This is a public-schema decision that needs maintainer sign-off before implementation.
Add a CursorCheck adapter rendering .rulesync/checks/*.md into a project-scoped .cursor/BUGBOT.md, concatenating the checks since Bugbot takes one aggregated instruction file per directory rather than per-check files. Global scope does not apply — Bugbot reads repository files only. Canonical severity / tools frontmatter has no Bugbot equivalent and would be rendered as prose or dropped.
Dimensions verified as already current
hooks — CURSOR_HOOK_EVENTS (src/types/hooks.ts) contains all 21 documented events (18 agent + 2 tab + workspaceOpen), matching the hooks docs exactly. Per-entry command / type / prompt / timeout / loop_limit / failClosed / matcher are all mapped in src/features/hooks/cursor-hooks.ts; project and global both emit .cursor/hooks.json.
rules — docs still document only description, globs, alwaysApply; src/features/rules/cursor-rule.ts matches. User/Team rules are dashboard-stored, not files.
https://cursor.com/changelog is SPA-rendered but WebFetch returned usable content, and paginated history is reachable at /changelog/page/N. Per-version slugs such as /changelog/3-11 return 404, so a few point-release pages could not be opened individually; the paginated index was used instead.
https://cursor.com/docs/rules.md, /docs/skills.md, /docs/bugbot.md, /docs/reference/permissions.md return 404; the HTML pages were used and are consistent where both were reachable.
Global ~/.cursor/commands support: no official docs page for custom slash commands could be retrieved, yet CursorCommand.getSettablePaths ignores global. This would be an over-claim in the support matrix rather than an upstream gap — worth a separate check.
https://cursor.com/changelog/page/3 — Auto-review run mode (v3.6, 2026-05-29) and the SDK update routing local.autoReview through permissions.json (2026-06-04), which is why gap 1 grew.
Summary
Cursor's IDE/Agent auto-run permission surface (
.cursor/permissions.json) was materially expanded during 2026-05/06 by the Auto-review run mode and the SDK'slocal.autoReviewrouting, and Bugbot's.cursor/BUGBOT.mdcode-review instruction files remain an actively developed surface. rulesync supports neither:permissionscovers only the CLI's.cursor/cli.json, andcursoris absent from thechecksfeature.Recent Releases
Source: cursor.com/changelog (paginated at
/changelog/page/N) plus the official docs.beforeSubmitPrompt,afterAgentResponse,afterAgentThought,stop,subagentStart) for cloud agents./review, GitHub/GitLab sync. Bugbot remains actively developed.local.autoReviewrouting configured throughpermissions.jsonwithautoRun.allow_instructions/autoRun.block_instructions.Gaps
1. permissions —
.cursor/permissions.json(IDE / Agent auto-run surface) unsupported~/.cursor/permissions.jsonand<workspace>/.cursor/permissions.jsonwithmcpAllowlist: string[],terminalAllowlist: string[], andautoRun: { allow_instructions: string[], block_instructions: string[] }. JSONC is supported; a key present in the file "replaces the corresponding IDE allowlist entirely", and per-user and per-repo arrays are concatenated. — permissions reference. Materially expanded in this research window by Auto-review run mode (v3.6, 2026-05-29) and the SDK update routinglocal.autoReviewthroughpermissions.json(2026-06-04).project+globalfor the CLI surface only.src/features/permissions/cursor-permissions.tswrites.cursor/cli.json/.cursor/cli-config.jsonwithpermissions.{allow,deny}Type(pattern)tokens plus acursoroverride carryingapprovalMode/sandbox.unsupportedfor.cursor/permissions.json—grep -rn "permissions.json|autoRun|mcpAllowlist|terminalAllowlist" src/returns no Cursor adapter, and the dry-run emits only.cursor/cli.json(project) and.cursor/cli-config.json(global).autoRun(and the allowlist mapping) is decided". Still absent fromsrc/**; the upstream surface has grown since.2. checks —
.cursor/BUGBOT.mdcode-review instruction files unsupported.cursor/BUGBOT.mdfiles to provide project-specific context for reviews. Bugbot always includes the root.cursor/BUGBOT.mdfile and any additional files found while traversing upward from changed files." Nested per-directoryBUGBOT.mdfiles are supported. — Bugbot docs.unsupported. The checks feature registrytoolCheckFactories(src/features/checks/checks-processor.ts) contains onlyampandhermesagent, andgetToolTargetsderives from that map, socursoris absent from the checks column. No occurrence ofBUGBOTanywhere undersrc/.Proposed Follow-up
CursorIdePermissionsadapter emitting.cursor/permissions.jsonat project and global scope. DerivemcpAllowlistfrom canonicalmcpallow rules andterminalAllowlistfrom canonicalbash/shell allow rules; exposeautoRun.allow_instructions/autoRun.block_instructionsthrough acursor-scoped override block in.rulesync/permissions.jsonc, since they are free-form natural-language hints with no canonicalcategory → pattern → actionequivalent. Because upstream treats a present key as fully replacing the IDE allowlist, the merge semantics need an explicit decision. This is a public-schema decision that needs maintainer sign-off before implementation.CursorCheckadapter rendering.rulesync/checks/*.mdinto a project-scoped.cursor/BUGBOT.md, concatenating the checks since Bugbot takes one aggregated instruction file per directory rather than per-check files. Global scope does not apply — Bugbot reads repository files only. Canonicalseverity/toolsfrontmatter has no Bugbot equivalent and would be rendered as prose or dropped.Dimensions verified as already current
CURSOR_HOOK_EVENTS(src/types/hooks.ts) contains all 21 documented events (18 agent + 2 tab +workspaceOpen), matching the hooks docs exactly. Per-entrycommand/type/prompt/timeout/loop_limit/failClosed/matcherare all mapped insrc/features/hooks/cursor-hooks.ts; project and global both emit.cursor/hooks.json.description,globs,alwaysApply;src/features/rules/cursor-rule.tsmatches. User/Team rules are dashboard-stored, not files.name,description,paths,disable-model-invocation,metadata;src/features/skills/cursor-skill.tsmatches.name,description,model,readonly,is_background;src/features/subagents/cursor-subagent.tsmatches, both scopes..cursor/mcp.jsonproject + global;McpServerSchemais alooseObjectandCursorMcpwrites servers verbatim, so newer keys (envFile,auth) pass through.${env:NAME}interpolation is handled.approvalModeenum (src/types/permissions.ts) already includes the v3.6auto-reviewvalue, plussandboxpassthrough..cursorignoreemitted;.cursorindexingignoreis a recorded intentional non-goal (Follow up Cursor upstream updates: .cursorindexingignore (indexing-only ignore file) #1923).Open questions / unconfirmed
https://cursor.com/changelogis SPA-rendered but WebFetch returned usable content, and paginated history is reachable at/changelog/page/N. Per-version slugs such as/changelog/3-11return 404, so a few point-release pages could not be opened individually; the paginated index was used instead.https://cursor.com/docs/rules.md,/docs/skills.md,/docs/bugbot.md,/docs/reference/permissions.mdreturn 404; the HTML pages were used and are consistent where both were reachable.~/.cursor/commandssupport: no official docs page for custom slash commands could be retrieved, yetCursorCommand.getSettablePathsignoresglobal. This would be an over-claim in the support matrix rather than an upstream gap — worth a separate check.References
.cursor/permissions.jsonshape:mcpAllowlist,terminalAllowlist,autoRun.*(gap 1).local.autoReviewthroughpermissions.json(2026-06-04), which is why gap 1 grew..cursor/BUGBOT.mdinstruction-file surface (gap 2)..cursor/cli.jsonsurface rulesync already covers, for contrast with gap 1.