Deep Research jobs are getting stuck in_progress and never finishing

I have multiple Deep Research jobs stuck with status=in_progress. we are passing the multiple hour mark. Same prompt works in the chat interface. Not sure what to do. This is an amazing service, I really don’t want to have to write my own research agent. Any ideas?

Hi
Could you provide more details about this

  1. What model are you using ?
  2. Code snippet if possible

I am having the exact same issue all day, almost 100 queries have been stuck in progress

Looking into this , will keep you posted

Code snippet — run_deep_research() from workers/services/llm_client.py:

from google import genai

Agent and polling constants

_DEEP_RESEARCH_AGENT = “deep-research-pro-preview-12-2025”
_DEFAULT_POLL_INTERVAL = 10.0 # seconds between polls
_DEFAULT_MAX_WAIT = 3600.0 # 1 hour timeout

async def run_deep_research(
prompt: str,
*,
poll_interval_seconds: float = _DEFAULT_POLL_INTERVAL,
max_wait_seconds: float = _DEFAULT_MAX_WAIT,
resume_interaction_id: str | None = None,
) → DeepResearchResult:
client = genai.Client() # uses GOOGLE_API_KEY from env

  # --- Create or resume interaction ---
  if resume_interaction_id:
      interaction_id = resume_interaction_id
  else:
      interaction = await client.aio.interactions.create(
          agent=_DEEP_RESEARCH_AGENT,
          input=prompt,
          background=True,
          store=True,
      )
      interaction_id = interaction.id

  # --- Poll until completed, failed, or timeout ---
  start = time.monotonic()
  last_status = None

  while True:
      elapsed = time.monotonic() - start
      if elapsed >= max_wait_seconds:
          raise LLMServiceError(
              f"Deep research timed out after {elapsed:.0f}s: "
              f"id={interaction_id} last_status={last_status}"
          )

      interaction = await client.aio.interactions.get(interaction_id)
      status = getattr(interaction, "status", None)

      if status != last_status:
          logger.info("Deep research poll: id=%s status=%s elapsed=%.0fs",
                      interaction_id, status, elapsed)
          last_status = status

      if status == "completed":
          break
      if status in ("failed", "cancelled"):
          raise LLMServiceError(f"Deep research {status}: {interaction_id}")

      await asyncio.sleep(poll_interval_seconds)

  # --- Extract results ---
  text = _extract_interaction_text(interaction)
  sources = _extract_search_sources(interaction)
  return DeepResearchResult(
      text=text,
      search_sources=sources,
      interaction_id=interaction_id,
  )

Observed behavior from worker logs:

  • Interaction is created successfully (gets an interaction_id)

  • Polling loop runs, status never transitions to “completed”

  • Agent model: deep-research-pro-preview-12-2025

  • SDK: google-genai (Python async client via client.aio.interactions)

  • API calls: client.aio.interactions.create() then client.aio.interactions.get() in a loop

    I will dm you the prompt and the run ID.

actually I don’t see how to dm you

Following up here - please let us know if you are still running into these issues with the latest Deep Research agents.

I am still facing this issue on the Gemini 3.5 Flash model

Gemini Deep Research Interactions stuck in in_progress after May 26 schema migration

Hello Google Gemini API team,

We are seeing a regression with Gemini Deep Research via the Interactions API after the May 26, 2026 migration to the new steps schema.

We run a production Telegram bot that takes a Polymarket event, builds a prompt, starts Gemini Deep Research, then delivers the final report as PDF to the user.

Since May 26, some Deep Research interactions never complete. They remain in:


status: in_progress
output_text: empty
error: None
steps: only one user_input step


They stay like this for hours. There is no completed, failed, requires_action, cancelled, or expired terminal status.

**Environment:**

- Python 3.12.3 (production), Python 3.10 (test instance)
- google-genai==2.7.0 (production), google-genai==1.75.0 (test instance)
- httpx==0.28.1
- Model: deep-research-pro-preview-12-2025 (production), also tested deep-research-preview-04-2026 and deep-research-max-preview-04-2026
- The issue reproduces on both SDK versions

**API method in production bot:**

```python
client.interactions.create(
    input=full_prompt,
    agent="deep-research-pro-preview-12-2025",
    background=True,
    store=True,
)

Then we poll with:

client.interactions.get(interaction_id)

What we observe:

  • Before May 26, we successfully ran 300+ Deep Research tasks across different prompts and Polymarket events.

  • After May 26, some tasks get stuck indefinitely.

  • For stuck tasks, interactions.get(id) repeatedly returns in_progress, with no output and no error.

  • The only step is user_input; there are no model/tool/search/url steps, so it looks like the agent worker never starts after the interaction is accepted.

  • Network tests from the same server are stable. Raw HTTP requests to generativelanguage.googleapis.com work consistently.

  • The issue is not the SDK client lifecycle bug: our real code keeps the genai.Client instance alive.

  • Deep Research works normally through the Gemini web interface (AI Studio) during the same time period when API calls are stuck.

  • A separate CLI implementation using the same server, same model, same universal prompt, and same events has completed 8/10 runs successfully when using:

client.interactions.create(
    input=prompt_text,
    agent="deep-research-pro-preview-12-2025",
    background=True,
    stream=True,
)

This suggests the background=True, store=True polling path may be using a different execution path or queue than the streaming path.

  • One interaction completed successfully (2.3 min) using a brand-new API key from a fresh Google Cloud project with store=True. Subsequent requests with the same key and identical parameters returned to the stuck behavior. This suggests possible per-key or per-project rate limiting or queue starvation, rather than a pure code-path bug.

We also tested / considered:

  • The issue does not look like prompt parsing failure, because the stuck interaction never proceeds past the initial user_input step.

  • It does not look like collaborative planning waiting for approval, because there is no model_output plan step and no requires_action status.

  • The new steps schema parsing works for completed interactions.

  • The problem reproduces across all three available Deep Research models (deep-research-pro-preview-12-2025, deep-research-preview-04-2026, deep-research-max-preview-04-2026).

  • The problem reproduces with trivial prompts (e.g., “What is 2+2?”), not just large production prompts.

  • The problem is that some interactions never reach any terminal state.

Stuck interaction IDs:

# Production bot (deep-research-pro-preview-12-2025, without store=True):
v1_ChdURWtaYW83S0Z0aUY0LUVQNnFTQ21BWRIXVEVrWmFvN0tGd........
  stuck 31min, killed by bot restart

# Test bot (deep-research-pro-preview-12-2025, with store=True):
v1_ChdRVmtaYXR6N1BLX0FnOFVQMHFxSTRBMBIXUVZrWm.....
  stuck 16+min

# Test script (deep-research-max-preview-04-2026, store=True, trivial "2+2" prompt):
v1_ChdUWGNaYXJiZk04X2JqdU1QNzZTRHNBZxIXVFhjWmFyYmZNO......
  stuck 10+min

# Test script (deep-research-preview-04-2026, store=True) — SUCCEEDED:
v1_Chc5SDhaYXFMMEx2bkJqdU1QOVlTd3lRaxIXOUg4WmFxTDBMdm5CanV.....
  completed in 2.3min ✓

# Test bot (deep-research-preview-04-2026, store=True, new API key from new project):
v1_ChdDb1VaYXVQSEs2bmJqdU1QZ2J1QmdBZxIXQ29VWmF1U......
  stuck 13+min

Questions:

  1. Is there a known issue with Deep Research Interactions created with background=True, store=True after the May 26 migration?

  2. Are background=True, store=True and background=True, stream=True routed through different backend execution paths or queues?

  3. Should production integrations use stream=True first and then resume/poll with interactions.get(), instead of pure polling?

  4. What is the expected terminal behavior for a Deep Research interaction that fails to start? Should it eventually become failed or expired?

  5. Can you confirm the current default for agent_config.collaborative_planning for Deep Research?

  6. Should we explicitly set:

agent_config={
    "type": "deep-research",
    "thinking_summaries": "auto",
    "collaborative_planning": False,
}

  1. Is service_tier relevant for Deep Research reliability? Could flex cause accepted interactions to remain in in_progress indefinitely?

Expected behavior:

  • If the task is accepted, it should either start producing agent steps and eventually complete, or fail/expire with a terminal status.

  • It should not stay in in_progress indefinitely with only user_input.

This regression is affecting paid user-facing workflows, so any guidance from the Gemini API / Deep Research team would be very helpful.

Thank you.