[BUG] /goal keeps re-prompting after the user says stop; the agent can't pause it, and the Code tab never shows a goal is active

Status Open
Reported on v2.1.293
Maintainer reply None cached
Activity 0 comments · opened Oct 12, 2026

What's Wrong?

I set /goal Read and pursue <path>/HANDOVER.md in a Claude desktop Code tab session. Later I told the session to stop, many times and in plain words. The goal kept re-prompting it anyway, over three days.

From the session's transcript JSONL:

  • The goal's Stop hook fired 74 times and blocked the turn 73 times.
  • In 55 of those blocks, the evaluator's reason quotes my stop messages and still rules the condition not met. Example below.
  • The 9-consecutive-block safety cap fired 3 times. Each time, the loop started again on my next message.

There are four separate failures:

  1. The stop check ignores an explicit user stop. It judges only the goal condition. It can read "STOP" in the transcript, say so in its reason, and block anyway.
  2. The agent can't pause or clear the goal. It has no tool for it. All it could do was tell me to run /goal clear, then reply "Stopped." and get re-prompted again.
  3. Nothing in the Code tab shows that a goal is active. There is no indicator and no pause control. The only sign is a collapsed "Hook re-prompted Claude" block, which reads like a hook installed in a settings file. The cap message ("check stop_hook_active in the input…") also reads like advice for a user-written hook. Both the agent and I spent a long time searching settings.json, project settings, plugins and managed settings for a hook that doesn't exist on disk. The goal is a session-scoped Stop hook held in the running process.
  4. No clear way out. The agent set CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0 in ~/.claude/settings.json, expecting it to stop the re-prompts. The running session kept re-prompting, and nothing said whether a restart was needed or what would actually work. /goal clear is the only fix, and nothing in the UI points to it.

What Should Happen?

  • An explicit user stop ("stop", "pause", "remove this") pauses the goal. Either the stop check treats a user-ordered stop as a pass, or the goal pauses itself.
  • The agent gets a tool to pause or clear the active goal when the user asks. Stopping shouldn't depend on the user knowing a slash command.
  • The Code tab shows an active goal in a persistent bar with pause/resume and clear controls. Codex has this: its goal bar with a pause/play button is always visible and works.
  • The "Hook re-prompted Claude" block names its source, for example "Goal re-prompted Claude. Run /goal clear or press Pause to stop."
  • After the 9-block cap fires, the goal pauses instead of starting again on the next message.

Error Messages/Logs

Hook re-prompted Claude
[Read and pursue <path>/HANDOVER.md]: The condition requires pursuing HANDOVER.md, but the transcript shows the user halted work ('STOP! ...') and asked for the goal to be cleared ('REMOVE THIS ... HOOK, NOW.'). [...] The pause is user-directed, so the handover is not being pursued and the condition is not satisfied.
A hook blocked the turn from ending 9 consecutive times — overriding and ending turn. For Stop/SubagentStop hooks, check stop_hook_active in the input and return success while it's true. Set CLAUDE_CODE_STOP_HOOK_BLOCK_CAP to raise this limit.

Steps to Reproduce

  1. In the Claude desktop Code tab, run /goal Read and pursue <a file describing multi-day work>.
  2. Let it work for a few turns, then send "STOP".
  3. The agent says it has stopped. The goal's Stop hook re-prompts it.
  4. Send "stop" again. It keeps going until the 9-block cap, then starts again on your next message.

Claude Model

Opus 5.5 (claude-opus-5-5)

Is this a regression?

I don't know

Claude Code Version

2.1.293 (Claude desktop 2.31226.0, Code tab)

Platform

Anthropic API

Operating System

macOS 26.6.2

Terminal/Shell

Claude desktop app (Code tab)

Additional Information

Related: #100075 (stop check rejects a user-ordered handoff), #94041 (no way to acknowledge a hold), #100634 (/goal clear stuck in the queue behind the looping turn), #100532 (pause/clear a goal without typing), #93230 (goal hidden in scrollback).

This report adds three things those don't cover: the evaluator explicitly cites the user's stop and blocks anyway, the agent has no way to comply, and the desktop UI gives no sign that a goal is the cause.

View original on GitHub ↗