# The stop check: hold Claude Code when callers break

> The LLMGRAPH plugin holds Claude Code once when its edits left callers certain to break, and names them by file and line.

When Claude Code ends a turn after editing, the LLMGRAPH plugin checks whether any caller is now certain to break. If so, it holds the agent once and names each one by file and line.

## What it does

Your agent changes a function and says it is done. Before it can finish, the plugin asks the LLMGRAPH engine on your computer whether the saved edits left calls that are certain to break. If they did, the agent gets the list, fixes the calls or tells you why each one is fine, and then finishes. The list is no more than ten lines.

## When it holds, and when it never does

It holds the agent only for calls that are certain to break, in files that differ from your last commit.

It never holds for lines labelled within_these, maybe_more or cannot_see. It never holds twice in a row. It stays out of the way when no engine is running, when the project is not open in the engine, when the engine is still reading your files or is busy, and on any error or slow answer. The plugin never starts an engine.

## What your agent sees

This is the text the plugin handed to an agent in Claude Code after it changed `super_len(o)` to `super_len(o, strict)` in requests v2.32.3 and was told to touch no other file. It is copied from a real run, as printed:

```text
LLMGRAPH: 8 calls break because of your edits:
src/requests/models.py:526 PreparedRequest.prepare_body: misses "strict"
src/requests/models.py:575 PreparedRequest.prepare_content_length: misses "strict"
tests/test_utils.py:62 TestSuperLen.test_io_streams: misses "strict"
tests/test_utils.py:63 TestSuperLen.test_io_streams: misses "strict"
tests/test_utils.py:69 TestSuperLen.test_super_len_correctly_calculates_len_of_partially_read_file: misses "strict"
tests/test_utils.py:82 TestSuperLen.test_super_len_handles_files_raising_weird_errors_in_tell: misses "strict"
tests/test_utils.py:95 TestSuperLen.test_super_len_tell_ioerror: misses "strict"
tests/test_utils.py:98 TestSuperLen.test_string: misses "strict"
Fix them, or tell the user why each is fine.
```

The agent listed the breaks and offered two fixes instead of finishing. The raw capture and the other real answers are on [real answers](https://beta.llmgraph.in/docs/real-answers.md).

## The "not confirmed yet" line

Some broken callers are not yet labelled certain when the agent stops, because the type checker is still confirming them. Since version 0.4.5 the message then says "and N more are not confirmed yet" and points to [check_my_changes](https://beta.llmgraph.in/docs/questions/check_my_changes.md) for the full list, so your agent does not take a partial list for the whole one.

## Switch it off

It is on by default. To switch it off, run:

```sh
npx -y llmgraph-mcp hook off
```

Or set `LLMGRAPH_STOP_HOOK=off`, or remove or disable the plugin in Claude Code. `npx -y llmgraph-mcp hook on` brings it back. All the ways, and the plugin's other hook, are on [the plugin page](https://beta.llmgraph.in/docs/plugin.md).

## Related

- [Your agent said done, but the code is broken](https://beta.llmgraph.in/guides/agent-says-done-but-code-is-broken.md): why agents stop with callers broken and how to check their work.
- [A Stop hook that runs your type checker](https://beta.llmgraph.in/guides/claude-code-stop-hook-type-check.md): write your own Stop hook for Claude Code.
- [The five labels](https://beta.llmgraph.in/docs/answers/what-the-labels-mean.md#certain): what certain means.
