Submission blocked by hook

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Since the update this morning, I’ve been getting this error frequently. I changed everything to auto, not requesting any web searches or tool calls. I had some prompts work, and some fail. Turned off my MCP servers, same result. LMK how I can help debug

Request ID: eb5fe58e-392a-439d-ba0b-19adec364869
{“error”:“ERROR_HOOKS_BLOCKED”,“details”:{“title”:“Submission blocked by hook”,“detail”:“Hook blocked with message: Hook error: Error: Session initialization failed: 400”,“additionalInfo”:{},“buttons”:,“planChoices”:}}
Hook blocked with message: Hook error: Error: Session initialization failed: 400

Steps to Reproduce

Open new chat, ask question about codebase

Expected Behavior

Interact as normal without error

Operating System

MacOS

Version Information

Version: 2.4.23
VSCode Version: 1.105.1
Commit: 379934e04d2b3290cf7aefa14560f942e4212920
Date: 2026-01-29T21:24:23.350Z
Build Type: Stable
Release Track: Default
Electron: 39.2.7
Chromium: 142.0.7444.235
Node.js: 22.21.1
V8: 14.2.231.21-electron.0
OS: Darwin arm64 25.3.0

For AI issues: which model did you use?

GPT 5.2, Auto

For AI issues: add Request ID with privacy disabled

Request ID: eb5fe58e-392a-439d-ba0b-19adec364869

Does this stop you from using Cursor

Yes - Cursor is unusable

1 Like

Hi there!

This error indicates that a sessionStart hook is failing—the hook is calling an external service that’s returning a 400 error.

Quick fix: Locate and temporarily remove or rename your hooks.json file from one of these locations:

  • ~/.cursor/hooks.json (user-level)
  • <project>/.cursor/hooks.json (project-level)

Then restart Cursor.

If you’re still having issues after that, or you don’t find any hooks, please let me know!

Hey Colin, thanks for your reply! Neither file exists, I haven’t set up any hooks.

Thanks @JulianKingman!

There might be a few other places to look.

  1. Check if you have ~/.claude/settings.json or <project>/.claude/settings.json files that might contain hooks
  2. Claude plugins: Check ~/.claude/plugins/ for any installed plugins
  3. Do you see any configured hooks under Cursor Settings > Hooks?

Why is cursor suddenly looking at ~/.claude/ config files even if I’m not using any anthropic models?

Thanks @Joshua_Buss , that was why it was failing for me!

Also no Cursor hooks, but my .claude settings had an “enabledPlugins” that caused this for me.

Should I uninstall all plugins? I’ve got claudmem and context7 plugins installed. No hooks set up anywhere, in .claude nor .cursor

You can turn this off under Cursor Settings > Rules, Skills, Subagents

@JulianKingman As a troubleshooting step, you might try switching this off.

Yep, disabling those solves the issue.

A post was split to a new topic: Cursor IDE cut and paste bug

I’m hitting the same issue that’s completely blocking me from using Cursor. This started right after I updated to version 2.4.27 on macOS ARM64.

The error I’m getting is: “Hook blocked with message: Hook error: Error: Session initialization failed: 400”

When I check the Hooks logs and try to run the Claude Code hooks manually, I see two different errors:

Running bun “${CLAUDE_PLUGIN_ROOT}/scripts/worker-service.cjs” hook claude-code summarize gives me:

Hook error: SyntaxError: JSON Parse error: Unexpected identifier “Tool”

And running bun “${CLAUDE_PLUGIN_ROOT}/scripts/worker-service.cjs” hook claude-code session-init gives me:

Hook error: Error: Session initialization failed: 400

Here’s what’s frustrating - I haven’t touched my Claude Code configuration in ages. Nothing changed on my end. The only thing that changed was updating Cursor, and suddenly Composer is completely broken. I can’t submit anything.

What’s even stranger is that I’m not even using Anthropic models right now, but Cursor is still trying to initialize Claude Code hooks and failing. This worked perfectly fine before the update.

I found that disabling the “Rules, Skills, Subagents” setting fixes it, but that feels like a workaround rather than a solution. Why is Cursor now forcing Claude Code initialization even when it’s not being actively used? This seems like something that broke in the recent update.

Can someone from the team look into this? It’s a critical issue for me since I literally cannot use Composer at all right now.

My setup: Cursor 2.4.27, macOS ARM64 (M1), VSCode 1.105.1

Hey @Maxim_B

When you disable this:

You’re only disabling the use of third-party skills (like those in a .claude directory)

You can still use skills and subagents built in/for Cursor (sitting in a .cursor subdirectory). Like that, you shouldn’t be blocked form using Composer, unless I’m missing something!

Yes, disabling that setting does fix the Composer issue, but it’s really just a workaround. The problem is that turning off “Rules, Skills, Subagents” breaks other tools I rely on that use the Claude Code integration. I shouldn’t have to choose between using Composer and having my other workflows function properly.

The real issue here is that something changed in how Cursor handles Claude Code hooks after the update. This configuration was working perfectly fine before, and I haven’t modified anything in my setup. Now suddenly Cursor is failing to initialize these hooks and blocking submissions entirely.

Is there a way to fix the actual hook initialization problem rather than just disabling the feature? Or maybe make the Claude Code integration more resilient so it doesn’t completely break Composer when there’s an issue with session initialization?

It feels like this should either fail gracefully or there should be better error handling so one broken hook doesn’t take down the entire Composer functionality.

Agreed that we should dig into why multiple users get this error and how to prevent that.

I just want to be precise, though: Cursor didn’t handle Claude Code hooks before the update.

What other tools? Are they tools within Cursor? If not, this setting should have no effect.

I’m using Claude Code with the configuration from this repository: https://github.com/affaan-m/everything-claude-code - it includes hooks that I rely on for my workflow.

I also have claude-mem@thedotmack installed and configured.

So when I disable “Rules, Skills, Subagents” in Cursor settings, these Claude Code hooks and plugins stop working entirely. That’s why I mentioned it breaks my other tools - I need both Composer to work and these Claude Code integrations to function.

I understand this is a new feature in Cursor, but the issue is that after the update, Cursor started trying to initialize these hooks and is failing with the 400 error, which then blocks Composer completely. Before the update, everything was working fine - I could use both Claude Code tools and Cursor without any conflicts.

Is there a way to make the hook initialization more fault-tolerant so that if one hook fails, it doesn’t block the entire Composer functionality?

Hey @Maxim_B

Agreed that we should look into this! I’ll report it back to the team.

What I’m trying to parse out is what was working for you before this update? Skills and Subagents are both new to v2.4. Were you using Commands/Rules that are now not working when you disable this setting?

@Opti-kjh seems to have figured out the cause. I’m taking it back to the team!