Skip to content

docs: match coding-agent denial reasons and session-analysis starter name to code - #978

Merged
davidmytton merged 3 commits into
mainfrom
david/cursor/denial-reason-starter-name-a838
Oct 8, 2026
Merged

davidmytton merged 3 commits into
mainfrom
david/cursor/denial-reason-starter-name-a838

Conversation

@davidmytton

@davidmytton davidmytton commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Two coding-agent docs pages disagreed with the monorepo.

Denial reasons. The docs said a hook denial reason is only the rule ID. denialReason in apps/decide-service/server/lib/agent-hook/response.ts also appends any session-taint categories, the denying policy's label, the decision ID, and a Console false-positive link:

Blocked by Arcjet policy: destructive-command. Policy: coding-agent.destructive-command. Decision: gdec_…. Report false positive: https://console.arcjet.com/report/fp/gdec_….
  • In /coding-agents/hooks, the Responses section now describes the full format, gives an example, and lists the variations: taint categories, more than one denying policy, and the fail-closed Blocked by Arcjet: this action was not allowed by policy. form. The per-vendor denial table says "the denial reason" where it said "the rule ID".
  • On the Codex, Cursor, and Muse Code pages, the RULE_ID placeholder in the denial bodies is now REASON, and the text that said a denial names "nothing else" is updated to match the code.
  • In /coding-agents/policies, the model-allowlist and roll-out sentences now mention the label and decision ID.

Session-analysis starter. coding-agent.tainted-session is renamed to coding-agent.session-analysis, the label in arcjet-decide/internal/mcp/skills/author-guard-policy/references/examples.md. Its rule ID is still tainted-session-risky, so the docs keep that. The starter's description used to say any taint flag locks shell, web, MCP, and file writes. It now matches the Rego: prompt_injection, data_exfiltration, code_execution_risk, sensitive_data_exposure, and elevated_risk lock all four, and credential_access locks only web and MCP. No other flag locks anything.

No screenshots change. Every edit either falls below the 5,000-pixel capture height or stays within the diff threshold.

Open in Web Open in Cursor 

…name to code

Co-authored-by: David Mytton <davidmytton@users.noreply.github.com>
@vercel

vercel Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
arcjet-docs Ready Ready Preview Oct 8, 2026 1:07pm UTC

Request Review

…eason-starter-name-a838

# Conflicts:
#	src/content/docs/coding-agents/index.mdx
#	tests/screenshot.test.ts-snapshots/screenshot-coding-agents-dark-chromium-linux.png
#	tests/screenshot.test.ts-snapshots/screenshot-coding-agents-light-chromium-linux.png

Co-authored-by: David Mytton <davidmytton@users.noreply.github.com>
Co-authored-by: David Mytton <davidmytton@users.noreply.github.com>
@davidmytton
davidmytton marked this pull request as ready for review October 8, 2026 13:27
@arcjet-review arcjet-review Bot added the needs review Awaiting human review label Oct 8, 2026
@davidmytton
davidmytton added this pull request to the merge queue Oct 8, 2026

@arcjet-review arcjet-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arcjet Review — 🟢 Low Risk

Decision: Approved

Rationale: Documentation-only PR touching five .mdx files in src/content/docs/coding-agents/. Changes align the docs with actual code behavior: (1) denial-reason format now describes the full Blocked by Arcjet policy: … Policy: … Decision: … Report false positive: … string produced by apps/decide-service/server/lib/agent-hook/response.ts, (2) RULE_ID placeholders replaced with REASON in per-vendor denial bodies, and (3) coding-agent.tainted-session renamed to coding-agent.session-analysis, with the taint-flag locking behavior described per the Rego. No code, config, dependencies, or infra touched; no secrets or user-input handling involved.

Summary of Changes

Doc updates for coding-agents pages: expand the hook denial-reason description and example, rename coding-agent.tainted-session → coding-agent.session-analysis and describe per-flag locking behavior, swap RULE_ID → REASON placeholders in Codex/Cursor/Muse Code denial tables, and update the model-allowlist and roll-out sentences to mention the policy label and decision ID.

Review: f8dd8796 | Model: anthropic/claude-opus-4-7 | Powered by Arcjet Review

**Execute on** option in one round trip and applies the most restrictive
decision. A denied AWS call does not by itself mark the session tainted —
publish `coding-agent.tainted-session` when you want risky follow-ups locked
decision. A denied AWS call does not by itself mark the session tainted –

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: this line changed the em-dash (—) to an en-dash (–) while the surrounding prose and the rest of this file use em-dashes. Likely unintentional — restore — for consistency?

Suggested change
decision. A denied AWS call does not by itself mark the session tainted –
decision. A denied AWS call does not by itself mark the session tainted —
publish `coding-agent.session-analysis` when you want risky follow-ups locked

the Console. The reason also has the following variations:

- If the session carries session-taint flags, the reason names them before
the policy label, such as `Category: credential_access.`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example decision ID gdec_01jz8k3m4n5p6q7r8s9t0v1w2x uses characters outside Crockford base32 (contains l, o, and u-like letters that are normally excluded from ULID/Crockford encodings). If gdec_ IDs are ULIDs, consider using a syntactically valid example so readers who copy it don't produce a broken Console link. If gdec_ IDs don't follow ULID rules, ignore.

@arcjet-review arcjet-review Bot removed ai-review-in-progress needs review Awaiting human review labels Oct 8, 2026
Merged via the queue into main with commit 563a5f5 Oct 8, 2026
11 checks passed
@davidmytton
davidmytton deleted the david/cursor/denial-reason-starter-name-a838 branch October 8, 2026 13:38

This branch was successfully deployed

1 active deployment
Preview — 35e765ec Deployed Oct 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants