The chat with the subagent won't load until the subagent is finished

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

It is not possible to monitor the progress of new subagents because the chat with them does not load until the subagent has finished its task.

This does not apply to subagents that were called again using resume.

Steps to Reproduce

Call a subagent via agent

Screenshots / Screen Recordings

Operating System

Windows 10/11

Version Information

Version: 3.13.21 (system setup)
VS Code Extension API: 1.128.0
Commit: 55434bd8062ece6fee083b82beed2aee42d253f0
Date: 2026-07-27T03:26:14.573Z
Layout: IDE
Build Type: Stable
Release Track: Nightly
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Windows_NT x64 10.0.22631

For AI issues: which model did you use?

Any

Additional Information

See also:

Does this stop you from using Cursor

No - Cursor works, but with this issue

Thanks for the clear screenshots! I reproduced the same behavior on my end. Clicking a subagent card while it’s still running opens a standalone tab whose body stays on Loading Chat for the entire run, then loads the full transcript once the subagent finishes. This is something we’ve been seeing reported over the last couple of weeks, and I’ve flagged it with our team.

A couple of things that help in the meantime:

  1. Watch progress in the parent chat. The subagent card there keeps its live status (Waiting for subagent, todos counter, current thought) throughout the run.
  2. resumed subagents render normally (as you noticed), so if you need to jump into a running one, resume it.

Refocusing or reopening the tab after the subagent finishes loads the full transcript. I’ll circle back when there’s a fix.

The issue became chaotic during the incident :eyes:


Cursor: 3.13.21 (system setup)
RID: 23f50c7c-445d-4997-8a2b-67998e0ef0a9 Privacy on

Will keep you posted on the fix!

@Artemonim We’ve implemented a fix and can confirm all services are back up and running. We appreciate your patience and are sorry for the trouble!

In 3.14.7 (system setup) Subagents are now displayed as stopped when they are performing their tasks…

RID: e538ee3c-1de5-4564-8043-1471a4d133a4 Privacy on

Subagent was interrupted due to the error “We are experiencing high load on the Grok 4.6 model; please try another one or Auto,” and after this interruption, it remained in a state where it could not be opened.

If the main Agent hadn’t been instructed by me to git stage between Subagent calls, this could have ruined several hours of coordinated agent work and I wouldn’t have been able to find out exactly what work the subagent had managed to complete and where he had left off.

Version: 3.16.21 (system setup)
VS Code Extension API: 1.128.0
Commit: 19d9a5fed476b765af0629f75da1c92943d81360
Date: 2026-08-14T23:01:43.637Z
Layout: IDE
Build Type: Stable
Release Track: Nightly
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.291
OS: Windows_NT x64 10.0.22631

private RID: 5b28555e-1afe-4c22-8fae-20ab318c9fdf


Yes, I got an error message with a Resume button, but it disappeared because I tried to open the Subagent before clicking Resume.

The following custom hook turned out to be the problem of The chat with the subagent won't load until the subagent is finished - #12 by Artemonim

    "subagentStart": [
      {
        "command": "powershell -NoProfile -ExecutionPolicy Bypass -File ./hooks/
        remind-codebase-discovery.ps1"
      }
    ],
# * Injects Codebase Memory MCP discovery guidance into agent context where Cursor honors it.
$ErrorActionPreference = 'Stop'

# * Consume stdin so the hook protocol stays clean even if we ignore most of the payload.
$raw = [Console]::In.ReadToEnd()
$payload = $null
if (-not [string]::IsNullOrWhiteSpace($raw)) {
    $payload = $raw | ConvertFrom-Json
}

$message = 'Code discovery: prefer codebase-memory-mcp (search_graph, trace_path, get_code_snippet, query_graph, search_code) over grep/file-read; run index_repository explicitly if the project is not indexed. Auto-indexing is disabled intentionally. Project/index name hint: derive it from the full repo path by removing the drive colon and joining path segments with hyphens, e.g. G:/GitHub/RepoName -> G-GitHub-RepoName; use list_projects if unsure.'

$eventName = ''
if ($null -ne $payload -and $null -ne $payload.hook_event_name) {
    $eventName = [string]$payload.hook_event_name
}

if ($eventName -eq 'subagentStart') {
    # * Documented: permission. additional_context mirrors sessionStart; Cursor 3.11 merges it
    # * but does not currently surface it inside template subagent context (platform gap).
    [ordered]@{
        permission         = 'allow'
        additional_context = $message
    } | ConvertTo-Json -Compress
    exit 0
}

# * sessionStart (and unknown payloads): inject into the parent conversation context.
[ordered]@{
    additional_context = $message
} | ConvertTo-Json -Compress

Should I file a separate bug report for this, or just mark the current one as solved?