AI DevelopmentMethodology10 min readPublished September 3, 2026

Three APIs, one question: while a tool call is outstanding, who is allowed to do anything

When a Tool Call Takes Ten Minutes, What Does Your Agent Do

A build, a long database query, a human approval: some tool calls take minutes, not seconds. This census records what OpenAI, Anthropic and Google each document for that case, from their own developer pages. One vendor now lets the model keep working. One requires the result in the very next message. One has the feature in a single API and not in its newest model there.

DA
Digital Applied Team
Senior strategists · Published Sep 3, 2026
PublishedSep 3, 2026
Read time10 min
SourcesVendor docs only
OpenAI Responses: model continues after an async call
Yes
async: true; GPT-6 Astra and later (OpenAI docs)
Anthropic Messages: result required in the next message
Yes
tool_result blocks must immediately follow (Anthropic docs)
Anthropic programmatic call pending limit
~4 min
TimeoutError inside the code container (Anthropic docs)
Google non-blocking functions
Live API only
Gemini 2.5 Flash Live; 3.1 Flash Live is synchronous only

With the GPT-6 Astra release on September 3, 2026, OpenAI shipped asynchronous tool calling in its Responses API: set async: true on a function or custom tool and the model can keep working after it issues the call, before your application returns the output. That is the first standard, non-realtime frontier API to let a model proceed while a client-side tool is still running; Google already documents the behaviour, but only in its realtime Live API. This page records what each of three vendors documents for the same situation, and what each one leaves out.

It is a different question from the one in our post on synchronous versus asynchronous agent workflows. That post is about working modes: whether a whole agent run happens in the foreground or in the background. This one is about a single tool call inside a turn, and whether the API lets the model do anything else while it waits.

Key takeaways
  1. 01
    OpenAI is the only vendor whose standard API lets the model continue.With async: true the model issues the call and carries on. The result comes back in a later request, matched by the original call_id. The application still runs the tool; OpenAI does not.
  2. 02
    Anthropic's rule is the opposite: the result comes next, or nothing does.Every tool result has to sit directly after its tool call in the history, and nothing may come between them. The turn ends when the model calls the tool, so the application holds the clock, not the API.
  3. 03
    Google documents non-blocking functions in the Live API only.Functions marked NON_BLOCKING let the conversation continue, with a scheduling flag for when the result lands. The docs list Gemini 2.5 Flash Live as supporting it and Gemini 3.1 Flash Live as synchronous only.
  4. 04
    The only documented timeout is Anthropic's, and it is four minutes.Inside programmatic tool calling, a pending call raises a TimeoutError after about four minutes and idle containers are reclaimed after about five. Neither OpenAI nor Google states a limit for an outstanding client call.

01The datasetThe census.

Each row is one API surface. A client tool is a function your application runs; the vendor’s hosted tools, which run on the vendor’s side, are excluded because you never wait on them. The three columns answer the question three ways: can the model keep generating while your tool runs, how does a late result get back into the conversation, and what does the documentation say about time limits.

Read from each vendor’s developer documentation on September 4, 2026: OpenAI async tool calling and Background mode guides; Anthropic handle-tool-calls, parallel-tool-use and programmatic-tool-calling pages; Google Gemini function-calling and Live API tools pages.
SurfaceModel continues while the call is outstandingHow a late result reattachesDocumented limit
OpenAI Responses, async toolsYes. With async: true the model keeps working after issuing the call. GPT-6 Astra and later. Function and custom tools onlyA function_call_output or custom_tool_call_output item in a later request, carrying the original call_id, with previous_response_id set to the latest responseNone stated for the outstanding call. Not for hosted tools, not with programmatic tool calling, not with parallel calls in multi-agent mode
OpenAI Responses, Background modeDifferent thing: the whole response is generated asynchronously and the application polls. Tool calls inside it are unchangedPoll the response until it leaves queued or in_progress; a stream can be resumed by sequence number if started with stream: trueResponse data is stored for roughly 10 minutes to support polling; deleted after that unless store is true
Anthropic Messages, client toolsNo. The response ends with stop_reason tool_use; the model produces nothing further until the results arriveA tool_result for every tool_use, all in the next user message, before any text, directly after the tool-use message with nothing between them. A call you choose not to run gets an is_error resultNone stated. The turn has ended, so the application decides how long to wait before sending the next message
Anthropic programmatic tool callingPartly. Claude’s own code in the execution container calls your tools as async functions and can run them in parallel; the model itself is paused while the code waitsA tool_result on the paused request, with the container ID and the same tools array; the code resumesAbout 4 minutes: a pending call then raises a TimeoutError inside the code. Idle containers reclaimed after about 5 minutes
Google Gemini API, function callingNot documented. The page describes parallel calls in one turn and compositional calls in sequence; nothing about proceeding before a resultA function_result step in the next request; in stateless mode the full history including thought and function_call steps must be resent as receivedNot documented
Google Gemini Live APIYes, for functions declared with behavior NON_BLOCKING; the conversation continues. Listed for Gemini 2.5 Flash Live; Gemini 3.1 Flash Live is listed as synchronous onlyThe FunctionResponse carries a scheduling value: INTERRUPT, WHEN_IDLE or SILENT, which tells the model when to act on itNot documented beyond the session

The headline is the first column. In the standard, non-realtime API, one vendor lets the model proceed while your tool runs, one forbids it by message-ordering rule, and one does not say. The second column matters just as much for anyone writing the loop: all three reattach by an identifier, but only OpenAI’s identifier is allowed to arrive several turns later.

02OpenAIThe model keeps going.

OpenAI’s async tool calling guide is short and specific. A normal function call pauses the model’s turn until the tool responds. Mark the tool async and the model can issue the call and carry on. The guide’s three use cases are kicking off a slow lookup before it is needed, answering whatever part of the request does not depend on it, and feeding the result in once the application has it. The response can contain both the async call and an answer.

The sentence that stops the feature being misread is OpenAI’s own: “Async tools don’t move execution to OpenAI or manage your background jobs.” Your application still runs the tool, still holds the job, and still has to send the output back in a later request under the original call ID. If other turns happen first, you continue from the latest response ID and keep the original call ID.

The wait tool is yours to write

OpenAI’s guide adds a pattern for the case where the model eventually needs the result: give each async tool a task handle argument, keep a registry binding handles to call IDs and running jobs, and define an ordinary synchronous wait tool the model can call when its next step depends on pending results. The guide states that this wait tool is not a built-in Responses tool. Its schema and behaviour belong to your application.

The compatibility notes are the fences. Async applies to function and custom tools the application runs, not to hosted built-in tools. It is not to be configured for programmatic tool calling, and in multi-agent mode it is not to be combined with parallel tool calls. It requires GPT-6 Astra or a later model, which we covered in our Astra launch guide.

03AnthropicThe next-message rule.

Anthropic’s Messages API has no equivalent flag, and its handle-tool-calls documentation makes the ordering explicit: “Tool result blocks must immediately follow their corresponding tool use blocks in the message history.” Nothing may sit between the two messages, and within the user message the results come first and any text after. A response that calls tools ends with a tool_use stop reason. The model is not running while you wait.

That design has a consequence people miss. Because the turn has ended, there is no API clock on your tool. You can take ten minutes or ten days before sending the next message, as long as that message begins with a result for every call. The parallel tool use page says execution order is your choice, that all results return together in one user message, and that a call you decline to run should get an error result rather than be omitted. An agent that wants to do other work meanwhile does it outside the model, then resumes.

Client tools
The application holds the clock
Messages API

Every tool_use gets a tool_result in the next user message, results before text, nothing in between. No documented timeout, because the model is idle until you return.

Documented rule
Programmatic
Claude's code waits, not Claude
Code execution container

Tools are exposed to Claude's Python as async functions it can gather in parallel. A pending call raises a TimeoutError after about four minutes; the request must carry the container ID.

Four-minute limit
Server tools
Anthropic runs it
web_search, web_fetch and peers

Execution happens on Anthropic's side and the result arrives in a later response. If a client call and an unfinished server call share a turn, your reply may contain only tool_result blocks.

Not a wait you control
Deferred schemas
A different kind of deferral
defer_loading and tool search

Defers loading a tool's definition into context, not its result. Often confused with async execution; it affects tokens, not time.

Not this question

04GoogleNon-blocking, in one API.

Google’s function calling page for the standard Gemini API documents parallel calls within a turn and compositional calls across turns, and in stateless mode requires the full history, including thought and function_call steps, to be resent exactly as received. It says nothing about the model proceeding before a function result arrives. That cell is marked not documented, which is the only honest reading.

The Live API tools page is a different story. It says that by default a Live session stops and waits for each function’s result before continuing, then offers an escape: declare a function with a NON_BLOCKING behaviour and the conversation continues while it runs. The function response then carries a scheduling value. INTERRUPT makes the model report the result at once, WHEN_IDLE waits until it has finished what it is doing, and SILENT stores the result for later use without comment.

That is the richest deferral contract of the three, because it lets the application say not just that a result is late but how the model should treat it when it lands. The catch is the support table on the same page. As read on September 4, 2026, it lists Gemini 2.5 Flash Live Preview as supporting synchronous and asynchronous function calling, and Gemini 3.1 Flash Live Preview as synchronous only. The newer model, on that page, has less of the feature.

05The confusionsThree things this is not.

Three adjacent features get called asynchronous and answer a different question. Background mode, in OpenAI’s Responses API, generates the whole response asynchronously so a client can poll or resume a stream; the guide says it was built for tasks that take several minutes, and it stores response data for roughly ten minutes to support polling. The tool calls inside a background response behave exactly as they would in the foreground.

Deferred tool loading, which both OpenAI and Anthropic offer under names like tool search and defer_loading, delays putting a tool’s schema into the context until the model needs it. It saves input tokens. It has no effect on how long a call may take. And programmatic tool calling, on both platforms, moves the loop into code the model writes, which changes how many round trips you pay for but, on Anthropic’s documentation, adds a four-minute limit rather than removing one.

Our function calling guide across the three vendors covers the ordinary round trip. This page is only about the case where that round trip cannot close in time.

06The decisionWhat to do with a slow tool.

The routes below follow from the documentation and nothing else. None of them depends on a provider managing your job, because on every one of these APIs the job is yours.

On OpenAI, and the model has other work
Mark the slow tool async, keep a registry of call IDs and handles, and write the wait tool yourself. Test the multi-turn case where the result lands three responses later; the docs say to continue from the latest response ID.
Use async: true
On Anthropic, and the tool is slow
Let the turn end. Run the job, do unrelated work outside the model, then send one user message that opens with every tool_result. If you abandon a call, return an is_error result rather than dropping it.
Hold the turn
The model must respond before the result exists
Return a result that says the job is running and how to check it, then give the model a status tool. This is the portable pattern on every API, and the only documented one on Gemini's standard endpoint.
Ticket, then poll
The tool is a human approval
Do not hold a model turn open for a person. End the turn, persist the conversation, and resume it with the approval as the tool result. OpenAI's async tools and Anthropic's ordering rule both permit this; the four-minute programmatic limit does not.
Persist and resume

The pattern that survives all three vendors is the ticket: a fast result that says the work has started, plus a tool to check on it. It is less elegant than OpenAI’s async flag and it works on Gemini’s standard endpoint, where nothing else is documented. Our AI transformation practice builds agent loops that way first and adopts a vendor’s deferral feature only where the documentation supports it.

Methodology

This census is built from vendor developer documentation only. It records what each page says as of the collection date and does not test the APIs.

Sources
OpenAI: async tool calling guide and Background mode guide. Anthropic: tool use overview, handle tool calls, parallel tool use and programmatic tool calling pages. Google: Gemini API function calling page and Live API tools page. All undated documentation pages.
As-of date
All pages were read on September 4, 2026. The page is dated September 3 for the OpenAI feature it responds to; the collection date is stated here and not restated elsewhere.
Scope
Client tools the application runs. Vendor-hosted tools are excluded. Agent frameworks and runtimes that sit above these APIs are not in this edition; a future refresh may add them.
Reading rule
A cell reads “not documented” when the vendor’s page is silent. It never reads “not supported”, because silence in documentation is not evidence of absence in the API.
Change log
September 4, 2026: first publication, three vendors and six surfaces.

07ConclusionThe job is always yours.

Slow tool calls

One vendor lets the model keep working, one makes you wait, and all three leave the running job in your hands.

OpenAI’s async tools are a real change: for the first time in a standard API, the model can issue a call and carry on with independent work, then take the result whenever it arrives. Google has a richer contract in its Live API and, by its own table, not in the newest Live model. Anthropic’s rule is strict and simple: the result comes next, and the application decides how long next takes.

None of that moves the job. OpenAI says so in one sentence, Anthropic’s programmatic mode says so with a four-minute timer, and Gemini’s standard page says nothing because there is nothing to say. The loop that owns the slow tool is the one you wrote.

This page will change when a vendor documents a new deferral mechanism or removes one. The Gemini 3.1 Flash Live row is the one we expect to move first.

Design the loop

Make the agent useful while it waits.

We design agent loops that survive slow tools on every vendor: ticket-and-poll by default, vendor deferral where the documentation supports it, and persistence for calls that wait on a person.

Free consultationExpert guidanceTailored solutions
What we build

Slow-tool agent loops

  • Call-ID registries for deferred results
  • Ticket-and-poll tools that work on any API
  • Turn persistence for human approvals
  • Timeout handling per vendor surface
  • Migration between vendor deferral features
FAQ · Slow tool calls

The questions we get about slow tool calls.

A tool definition flag, async: true, that lets the model continue working after it issues a function or custom tool call instead of pausing for the result. Your application still runs the tool and returns the output in a later request using the original call_id. OpenAI documents it for GPT-6 Astra and later, not for hosted tools, and not alongside programmatic tool calling.
Related dispatches

Continue exploring agent architecture.

AI Development

Why an AI’s Reasoning Can’t Follow You to Another Model

Anthropic, OpenAI and Google now bind a model’s reasoning to the model that produced it. What each locks, what breaks on a switch, and how a router copes.

September 2, 2026 · 7 minRead
AI Development

Can You Still Read What Your AI Agent Is Actually Thinking

What OpenAI, Anthropic, Google DeepMind and Meta each publish on whether an agent's reasoning trace can be read and trusted: every measured figure, every blank.

September 3, 2026 · 10 minRead
AI Development

What Happened When Four Companies Let Agents Patch Code

OpenAI, Cloudflare, Ramp and Google Chrome published their own numbers from agents finding and fixing security bugs. One table, every definition, every gap.

September 3, 2026 · 11 minRead
AI Development

When Your AI Agent Quietly Gets a Half-Finished Answer

Output truncation returns HTTP 200 and valid-looking partial content. The stop-reason field is the only signal, and it is named differently on every API.

August 29, 2026 · 22 minRead
AI Development

Computer-Use Agents: Microsoft vs Anthropic vs Google

Microsoft GA, Anthropic public beta, and Google Gemini preview — OSWorld scores now 78% across frontier models above the ~72% human baseline. Routing guide.

May 22, 2026 · 16 minRead
AI Development

Agent Computer Use: Enterprise Automation Playbook

Enterprise playbook for deploying computer-use agents — a 40-point guardrails checklist spanning identity, audit, action boundaries, failures, and compliance.

May 22, 2026 · 17 minRead