[BUG] Subagent vision accuracy severely degraded compared to main conversation (~20% vs ~95%)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When using the Task tool to spawn subagents for vision/image analysis tasks, accuracy is dramatically lower than performing the same task in the main conversation. The same image and prompt produces ~95% accuracy in the main conversation but only ~20% accuracy in a subagent. The subagent can load and view images (confirms correct title, page number), but misreads nearly all numeric values from charts - fabricating wrong percentages, wrong dollar amounts, and inventing non-existent data points.
What Should Happen?
Subagent vision accuracy should match main conversation accuracy when using the same model (opus) and prompt on the same image.
Error Messages/Logs
No error messages - the subagent completes successfully but returns incorrect data. Example comparison:
Data Point Main Conversation Subagent Ground Truth
Vendor A $45M (17%) $46M (17%) $45M (17%) ✓
Vendor B $27M (10%) $46M (17%) $27M (10%) ✗
Vendor C $11M (4%) $27M (10%) $11M (4%) ✗
Vendor D $33M (12%) 25% $33M (12%) ✗
Vendor E $12M (5%) 22% $12M (5%) ✗
Main conversation: ~10/11 values correct
Subagent: ~1/11 values correct
Steps to Reproduce
Steps to Reproduce
- Obtain any consulting-style PDF slide with a complex stacked bar chart containing multiple labeled data points (dollar amounts and percentages)
- Render a page to PNG using pypdfium2:
import pypdfium2 as pdfium
pdf = pdfium.PdfDocument("your_file.pdf")
page = pdf[0] # or whichever page has the chart
bitmap = page.render(scale=3)
pil_image = bitmap.to_pil()
pil_image.save("/path/to/test_image.png", "PNG")
- In the main Claude Code conversation, use Read to view the image, then paste this prompt:
<task>
Extract all content from this PDF page to structured markdown format.
</task>
<context>
This is a slide from a consulting deck. The goal is 100% accurate extraction
suitable for use as context in future conversations. Accuracy is critical -
wrong data is worse than missing data.
</context>
<instructions>
Follow these steps in order:
1. IDENTIFY: List every content block you see on the page (e.g., title,
subtitle, chart, table, callout boxes, bullet points, footnotes,
source line, page number).
2. DESCRIBE: For each content block, describe what you see in detail.
- For charts: describe the chart type, what the axes represent,
and read every visible label and data value
- For data labels: read paired values like "$45M (17%)" as a unit
- For tables: describe the structure and read each cell value
- Quote text exactly as written
3. EXTRACT: Convert your descriptions into structured markdown.
4. VERIFY: Where values should add up (e.g., percentages to 100%,
segments to a total), check the math. Note any discrepancies.
</instructions>
<constraints>
- Extract ONLY what is visible on the page - never invent, estimate, or infer values
- If a value is unclear or illegible, mark it as [unclear] or [illegible]
- If values don't add up, still extract them accurately and note the discrepancy
- It is better to say "cannot read this value" than to guess
- Do not summarize - extract complete content
</constraints>
<output_format>
Structure your response as:
## Step 1: Content Blocks Identified
[List of content blocks]
## Step 2: Detailed Description
[Description of each block with exact values you observe]
## Step 3: Markdown Extraction
[Final markdown output]
## Step 4: Verification
[Math checks and any notes about unclear content]
</output_format>
Note the accuracy of extracted chart values.
- Spawn a Task subagent with the same prompt:
<invoke name="Task">
<parameter name="subagent_type">general-purpose</parameter>
<parameter name="model">opus</parameter>
<parameter name="prompt">
<task>
Extract all content from this PDF page to structured markdown format.
</task>
<context>
This is a slide from a consulting deck. The goal is 100% accurate extraction
suitable for use as context in future conversations. Accuracy is critical -
wrong data is worse than missing data.
</context>
<instructions>
Follow these steps in order:
1. IDENTIFY: List every content block you see on the page (e.g., title,
subtitle, chart, table, callout boxes, bullet points, footnotes,
source line, page number).
2. DESCRIBE: For each content block, describe what you see in detail.
- For charts: describe the chart type, what the axes represent,
and read every visible label and data value
- For data labels: read paired values like "$45M (17%)" as a unit
- For tables: describe the structure and read each cell value
- Quote text exactly as written
3. EXTRACT: Convert your descriptions into structured markdown.
4. VERIFY: Where values should add up (e.g., percentages to 100%,
segments to a total), check the math. Note any discrepancies.
</instructions>
<constraints>
- Extract ONLY what is visible on the page - never invent, estimate, or infer values
- If a value is unclear or illegible, mark it as [unclear] or [illegible]
- If values don't add up, still extract them accurately and note the discrepancy
- It is better to say "cannot read this value" than to guess
- Do not summarize - extract complete content
</constraints>
<output_format>
Structure your response as:
## Step 1: Content Blocks Identified
[List of content blocks]
## Step 2: Detailed Description
[Description of each block with exact values you observe]
## Step 3: Markdown Extraction
[Final markdown output]
## Step 4: Verification
[Math checks and any notes about unclear content]
</output_format>
<image_path>
/path/to/test_image.png
</image_path>
Read the image at the path above and extract its content.
</parameter>
</invoke>
- Compare subagent results to main conversation results - subagent accuracy will be significantly lower on chart data values.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.0.65
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗