Ultraplan: stream timeouts, cache_control on empty blocks, teleport failure

Resolved 💬 10 comments Opened Apr 19, 2026 by pleasedodisturb Closed May 31, 2026

Bug Report

Claude Code version: Latest (as of 2026-04-19)
Model: Opus 4.7 (web session)
Feature: Ultraplan (cloud plan refinement)

What happened

Used ultraplan from CLI to refine a plan file. The web session launched but failed repeatedly:

Error 1: cache_control on empty text blocks

API Error: 400
{"type":"error","error":{"type":"invalid_request_error","message":"messages.94.content.4.text: cache_control cannot be set for empty text blocks"},"request_id":"req_011CaD9FhG4wEAtfmMwxUygg"}

This happened when the web session tried to update the plan file. Suggests an empty text block in the conversation context is getting cache_control headers.

Error 2: Stream idle timeout (repeated 4x)

API Error: Stream idle timeout - partial response received

Every attempt to write/update the plan file timed out mid-stream. User retried 4+ times, all failed with the same error.

Error 3: Teleport failure

The plan was saved to /root/.claude/plans/here-is-a-draft-proud-tarjan.md on the remote session but the "teleport" mechanism failed to pipe it back to the local CLI session. The web session itself acknowledged: "The 'teleport' phrase I used was the canned response per the plan-mode protocol, but the actual delivery mechanism is whatever your local harness does to pull that file back. Looks like it didn't pipe through."

User was stuck - the refined plan existed only on the remote, with no way to get it back except manually.

Expected behavior

  1. cache_control should not be set on empty text blocks - filter them out before sending
  2. Stream timeouts should have retry/resume logic, especially for plan file writes
  3. Teleport should reliably deliver the plan file back to the local session

Screenshots

User provided 4 screenshots showing the error sequence (available on request).

Impact

Ultraplan was completely unusable for this session. User had to abandon the web refinement and continue in the local CLI. The feature promises "refine plans on the web" but currently fails on non-trivial plans (this plan was ~200 lines).

Environment

  • macOS Darwin 25.4.0
  • Claude Code CLI (local) -> Claude Code Web (remote)
  • Plan file: ~200 lines markdown
  • Context: ~94 messages deep in conversation when ultraplan was invoked

View original on GitHub ↗

This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗