# Feature Request: Support Lazy Evaluation in interrupt via Callables

**URL:** <https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837>\
**Category:** LangGraph\
**Tags:** self-hosted, intro-to-langgraph, product-feedback, python-help, feature-request\
**Created:** [January 29, 2026, 2:22pm UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837 "2026-01-29T14:22:42Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![alonahmias](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/alonahmias/32/928_2.png) [@alonahmias](https://forum.langchain.com/u/alonahmias)\
**Post date:** [January 29, 2026, 2:22pm UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/1 "2026-01-29T14:22:42Z")

</div>

### Description

Currently, the `interrupt` function requires the `value` to be passed directly. This value is surfaced to the client when a `GraphInterrupt` is raised.

I propose extending `interrupt` (and adding/updating `async_interrupt`) to support **callables** (both sync and async). If a callable is provided, it should only be executed at the moment the interrupt is actually raised, rather than being evaluated beforehand and passed as a static argument.

### Motivation

In complex nodes, the “value” surfaced to a human might require:

1. **Expensive Computation:** Generating a summary or a preview of a large dataset.

2. **External Calls:** Fetching the latest state from a DB or a 3-party API to ensure the human sees the most up-to-date context.

3. **Cleanliness:** Avoiding boilerplate logic inside the node to “prepare” the interrupt value if it’s only needed conditionally.

By passing a callable, we ensure these operations only happen if the graph hasn’t already been resumed for that specific interrupt index.

### Proposed Changes

#### 1. Support for Callables in `interrupt`

The `interrupt` function logic would check if `value` is callable. If it is, and no resume value is found in the scratchpad, it executes the callable to populate the `Interrupt` object.

#### 2. Introduction of `async_interrupt`

Since many LangGraph workflows are async, providing an `async_interrupt` allows users to `await` database or API calls lazily.

**Example implementation for `async_interrupt`:**

Python

```auto
async def async_interrupt(value: Union[Any, Callable[[], Awaitable[Any]]]) -> Any:
    # ... logic to check scratchpad ...
    
    # When no resume value is found:
    interrupt_value = await value() if callable(value) else value
    
    raise GraphInterrupt(
        (
            Interrupt.from_ns(
                value=interrupt_value,
                ns=conf[CONFIG_KEY_CHECKPOINT_NS],
            ),
        )
    )

```

### Use Case Example

Python

```auto
async def my_node(state: State):
    # The 'get_latest_db_context' only runs if we actually 
    # hit the interrupt, not on every re-execution of the node.
    answer = await async_interrupt(get_latest_db_context)
    return {"data": answer}

```

---

<div class="post-metadata">

**Author:** ![pawel-twardziak](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/pawel-twardziak/32/960_2.png) [@pawel-twardziak](https://forum.langchain.com/u/pawel-twardziak)\
**Post date:** [January 29, 2026, 10:13pm UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/2 "2026-01-29T22:13:47Z")

</div>

hi @alonahmias

I’m a huge fan of this feature 💘 Just raised a PR for it 🙂 [feat(langgraph): add async\_interrupt by pawel-twardziak · Pull Request #6729 · langchain-ai/langgraph · GitHub](https://github.com/langchain-ai/langgraph/pull/6729)

@sydney-runkle @mdrxy @wfh

---

<div class="post-metadata">

**Author:** ![wfh](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/wfh/32/33_2.png) [@wfh](https://forum.langchain.com/u/wfh)\
**Post date:** [January 30, 2026, 1:51am UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/3 "2026-01-30T01:51:02Z")

</div>

Haha Pawal beat me to it. We’ll get this into the next release

---

<div class="post-metadata">

**Author:** ![pawel-twardziak](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/pawel-twardziak/32/960_2.png) [@pawel-twardziak](https://forum.langchain.com/u/pawel-twardziak)\
**Post date:** [January 30, 2026, 6:43am UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/4 "2026-01-30T06:43:02Z")

</div>

Sorry Will, I didn’t want it to turn out this way 🥹 This feature simply stole my heart 🤷 😄

---

<div class="post-metadata">

**Author:** ![alonahmias](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/alonahmias/32/928_2.png) [@alonahmias](https://forum.langchain.com/u/alonahmias)\
**Post date:** [January 30, 2026, 9:47am UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/5 "2026-01-30T09:47:14Z")

</div>

I’m very happy you got so excited from my feature request 🙂 , for now we hard coded this function in our code, in we would very much like to delete it 😂

---

<div class="post-metadata">

**Author:** ![pawel-twardziak](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/pawel-twardziak/32/960_2.png) [@pawel-twardziak](https://forum.langchain.com/u/pawel-twardziak)\
**Post date:** [February 2, 2026, 7:04pm UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/6 "2026-02-02T19:04:10Z")

</div>

hi @alonahmias

look at that comment [feat(langgraph): add async\_interrupt by pawel-twardziak · Pull Request #6729 · langchain-ai/langgraph · GitHub](https://github.com/langchain-ai/langgraph/pull/6729#issuecomment-3836929138) 🙂

---

<div class="post-metadata">

**Author:** ![alonahmias](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/alonahmias/32/928_2.png) [@alonahmias](https://forum.langchain.com/u/alonahmias)\
**Post date:** [February 4, 2026, 8:56am UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/7 "2026-02-04T08:56:37Z")

</div>

Hey, unfortunately, this doesn’t solve my issue, because im running the interrupt in a subgraph, and than it still revaluate the heavy node twice, or am i missing something?

---

<div class="post-metadata">

**Author:** ![alonahmias](https://yyz1.discourse-cdn.com/flex007/user_avatar/forum.langchain.com/alonahmias/32/928_2.png) [@alonahmias](https://forum.langchain.com/u/alonahmias)\
**Post date:** [February 4, 2026, 9:02am UTC](https://forum.langchain.com/t/feature-request-support-lazy-evaluation-in-interrupt-via-callables/2837/8 "2026-02-04T09:02:32Z")

</div>

I elaborated more in the issue u opened
