> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ctrlrun.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# FrameworkInterrupt

> One framework's human-in-the-loop primitive, and nothing else (SPEC-v0.5 §2.1).

`ctrlrun.FrameworkInterrupt` — class, defined at `src/ctrlrun/adapter.py:179`

```python theme={null}
class FrameworkInterrupt(Protocol)
```

One framework's human-in-the-loop primitive, and nothing else (SPEC-v0.5 §2.1).

`interrupt()` **may exit non-locally**: LangGraph's raises, the graph catches it and
checkpoints, and the resumed run re-enters here and returns. The provider never catches it.

An `interrupt()` that raises anything else is that framework's failure and not a decision.
Nothing is written and it propagates. There is no default, and in particular no default
`granted=False`: a denial is a human's answer, and manufacturing one from a crashed
interrupt puts a refusal in the evidence log that nobody made.

## Next

* [Python API index](/reference/api/index).
* [Get started](/get-started/quickstart) · [Why](/why).


## Related topics

- [Adapters](/adapters.md)
- [Claims](/CLAIMS.md)
- [Python API](/reference/api/index.md)
- [CTRLRun and framework human-in-the-loop](/compare/framework-hitl.md)
- [InterruptApprovalProvider](/reference/api/InterruptApprovalProvider.md)
