Sub-agent - LLM round trip bug with tool updateCurrentStep

Hey Cursor team!

As always thanks for amazing Cursor!

Today I’ve found strange issue, for me it looks like on the bound of LLM and cursor-agent.

What did I see - I’ve made command in chat, during the answer gpt 5.5 decided to call sub-agent for additional research in project. But could not take the answer of sub-agent - the error occurs he said, in spite of that I saw a huge correct sub-agent answer by my own eyes!

I can provide additional screenshots (sorry its Russian lang there but I will explain everything if needed. Also I have transcripts and Langfuse traces for more deep investigation.

Version: 3.2.16
VSCode Version: 1.105.1
Commit: 3e548838cf824b70851dd3ef27d0c6aae371b3f0
Date: 2026-04-28T21:07:47.682Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Linux x64 6.17.0-23-generic

Model: gpt 5.5

I’ve asked Cursor what happens, we together tried to investigate the problem. U can see our reasons here:

# Bug: Misleading error from `updateCurrentStep` causes subagent to drop substantive output

## Facts
- Subagent (type=`explore`) invoked the internal tool `updateCurrentStep` with empty input `{}` twice during its lifecycle: at the start and again in the final turn that also contained the substantive report text.
- The tool returned an error which the model paraphrased as "JSON parse error".
- After receiving that error in the final turn, the model emitted a follow-up assistant message with no tool_use, containing only a meta-note: "could not send via updateCurrentStep, the substantive part is above".
- Because that follow-up message had no tool_use, the subagent loop terminated and that message was returned to the parent as the subagent's result. The substantive report (in the previous assistant turn) never reached the parent.

## Root cause
The error returned by `updateCurrentStep` is non-actionable. Empty `{}` is valid JSON, so "JSON parse error" mislabels the actual problem (schema validation: required parameter missing). With no actionable signal, the LLM did not retry with corrected arguments and instead degraded into a "report failure to user" path, producing a final message that does not include the work product.

## Effect
- Substantive subagent output is silently lost across the subagent → parent boundary.
- Parent receives only the meta-failure note. From the user's point of view, the subagent appears to have failed despite having actually completed the work.

## Requested fix
Return a proper schema-validation error from `updateCurrentStep` (and any similarly-validated internal tools), e.g.:

    Invalid input for updateCurrentStep: missing required parameter `step` (string).

A descriptive, schema-aware error gives the LLM a direct path to recover (retry with the correct field) instead of falling back to a meta-message that destroys the substantive output.

## Notes
- The empty `{}` itself is an LLM mistake (it populated other tools' inputs correctly in the same turn). That is not in scope here. The actionable, programmatic part is the misleading error text, which is what turns a recoverable LLM mistake into a lost result.
- Repro artifact available: subagent transcript with two `updateCurrentStep` calls (`input: {}`) and the resulting final meta-message.

Hi there!

We detected that this may be a bug report, so we’ve moved your post to the Bug Reports category.

To help us investigate and fix this faster, could you edit your original post to include the details from the template below?

Bug Report Template - Click to expand

Where does the bug appear (feature/product)?

  • Cursor IDE
  • Cursor CLI
  • Background Agent (GitHub, Slack, Web, Linear)
  • BugBot
  • Somewhere else…

Describe the Bug
A clear and concise description of what the bug is.


Steps to Reproduce
How can you reproduce this bug? We have a much better chance at fixing issues if we can reproduce them!


Expected Behavior
What is meant to happen here that isn’t working correctly?


Screenshots / Screen Recordings
If applicable, attach images or videos (.jpg, .png, .gif, .mp4, .mov)


Operating System

  • Windows 10/11
  • MacOS
  • Linux

Version Information

  • For Cursor IDE: Menu → About Cursor → Copy
  • For Cursor CLI: Run agent about in your terminal
IDE:
Version: 2.xx.x
VSCode Version: 1.105.1
Commit: ......

CLI:
CLI Version 2026.01.17-d239e66

For AI issues: which model did you use?
Model name (e.g., Sonnet 4, Tab…)


For AI issues: add Request ID with privacy disabled
Request ID: f9a7046a-279b-47e5-ab48-6e8dc12daba1
For Background Agent issues, also post the ID: bc-…


Additional Information
Add any other context about the problem here.


Does this stop you from using Cursor?

  • Yes - Cursor is unusable
  • Sometimes - I can sometimes use Cursor
  • No - Cursor works, but with this issue

The more details you provide, the easier it is for us to reproduce and fix the issue. Thanks!

Dear System = )

I could not be 100% sure that it is exactly Cursor bug, because I think that it is on the connection between LLM-decisions and agent-working. As rational person I could not put all responsibility of this situation on the Cursor team and on the program - Cursor team could not be responsible for all that happens in gpt-brains =).

That is why I prefer to think about it as and improvement suggestion, not 100% bug.

But this is literally a bug report, which you decided to file incorrectly :eyes: