Skip to content

CM-68330: fix hook payload handling on Cursor for Windows#491

Open
Ilanlido wants to merge 1 commit into
mainfrom
CM-68330-strip-bom-in-hook-payload
Open

CM-68330: fix hook payload handling on Cursor for Windows#491
Ilanlido wants to merge 1 commit into
mainfrom
CM-68330-strip-bom-in-hook-payload

Conversation

@Ilanlido

@Ilanlido Ilanlido commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Two payload bugs found in Windows/Cursor MDM testing:

  • Cursor sends the hook payload with a UTF-8 BOM; json.loads rejects it and safe_json_parse returned {}, silently allowing without scanning. Read stdin bytes and decode utf-8-sig at both hook entry points - strips the BOM and pins the payload to UTF-8 regardless of the Windows ANSI code page (non-ASCII prompts were mojibake under cp1252). The text-mode fallback path lstrips U+FEFF as defense-in-depth.

  • Cursor sends workspace_roots=[] when no folder is open; the .get() default only applies when the key is missing, so workspace_roots[0] raised IndexError. Fall back to '.' via or.

Two payload bugs found in Windows/Cursor MDM testing:

- Cursor sends the hook payload with a UTF-8 BOM; json.loads rejects it and
  safe_json_parse returned {}, silently allowing without scanning. Read stdin
  bytes and decode utf-8-sig at both hook entry points - strips the BOM and
  pins the payload to UTF-8 regardless of the Windows ANSI code page (non-ASCII
  prompts were mojibake under cp1252). The text-mode fallback path lstrips
  U+FEFF as defense-in-depth.

- Cursor sends workspace_roots=[] when no folder is open; the .get() default
  only applies when the key is missing, so workspace_roots[0] raised
  IndexError. Fall back to '.' via `or`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

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.

1 participant