Skip to content

strands.interrupt

Human-in-the-loop interrupt system for agent workflows.

@dataclass
class Interrupt()

Defined in: src/strands/interrupt.py:17

Represents an interrupt that can pause agent execution for human-in-the-loop workflows.

Attributes:

  • id - Unique identifier.
  • name - User defined name.
  • reason - User provided reason for raising the interrupt.
  • response - Human response provided when resuming the agent after an interrupt.
def to_dict() -> dict[str, Any]

Defined in: src/strands/interrupt.py:32

Serialize to dict for session management.

class InterruptException(Exception)

Defined in: src/strands/interrupt.py:37

Exception raised when human input is required.

def __init__(interrupt: Interrupt) -> None

Defined in: src/strands/interrupt.py:40

Set the interrupt.

@dataclass
class PendingToolExecution()

Defined in: src/strands/interrupt.py:46

State required to resume tool execution without calling the model again.

Attributes:

  • assistant_message - Assistant message containing the pending tool uses.
  • completed_tool_results - Results completed or synthesized during the interrupted execution.
@dataclass
class _InterruptState()

Defined in: src/strands/interrupt.py:59

Track the state of interrupt events raised by the user.

Note, unanswered interrupts are cleared after resuming; an answered invocation-scoped response is retained for the rest of its interrupt cycle.

Attributes:

  • interrupts - Interrupts raised by the user. May be non-empty even when activated is False because retained responses persist until their cycle ends.
  • context - Additional context associated with an interrupt event.
  • activated - True if agent is in an interrupt state, False otherwise.
  • pending_tool_execution - State required to resume an interrupted tool execution.
def activate() -> None

Defined in: src/strands/interrupt.py:79

Activate the interrupt state.

def deactivate() -> None

Defined in: src/strands/interrupt.py:84

Deactivate the interrupt state.

Interrupts, context, and pending tool execution are cleared.

def end_tool_cycle() -> None

Defined in: src/strands/interrupt.py:95

Clear a completed tool cycle’s state, keeping answered invocation-scoped responses.

def end_interrupt_cycle() -> None

Defined in: src/strands/interrupt.py:107

Release invocation-scoped interrupts once their interrupt cycle is over.

def resume(prompt: "AgentInput") -> None

Defined in: src/strands/interrupt.py:120

Configure the interrupt state if resuming from an interrupt event.

Arguments:

  • prompt - User responses if resuming from interrupt.

Raises:

  • TypeError - If in interrupt state but user did not provide responses.
def set_pending_tool_results(
completed_tool_results: list["ToolResult"]) -> None

Defined in: src/strands/interrupt.py:156

Update completed results for a pending tool execution.

def to_dict() -> dict[str, Any]

Defined in: src/strands/interrupt.py:177

Serialize to dict for session management.

Exclude deactivated invocation-scoped responses — persisting them would give a restored agent a standing approval.

@classmethod
def from_dict(cls, data: dict[str, Any]) -> "_InterruptState"

Defined in: src/strands/interrupt.py:201

Initialize interrupt state from serialized interrupt state.

Interrupt state can be serialized with the to_dict method. Legacy tool execution context is migrated into the typed pending state.