[BUG] Image perception incorrectly renders HEIC-converted JPEGs as upside down

Resolved 💬 2 comments Opened Feb 2, 2026 by s1k0ra Closed Mar 3, 2026

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 Read tool to view a JPEG file that was converted from HEIC via sips -s format jpeg, Claude consistently perceives the image as upside down (180 degrees rotated), even though the image displays correctly in all other applications (Finder, Preview, browser, Next.js <Image>).

This leads to a destructive loop where Claude repeatedly applies sips -r 180 to "fix" the orientation, actually breaking a correctly-oriented image each time. The user has to intervene to stop the cycle.

What Should Happen?

Claude should perceive the converted JPEG in the same orientation as it renders in standard image viewers (Finder, Preview, browsers). The EXIF orientation tag should be respected during image ingestion.

Error Messages/Logs

No error messages. Claude confidently but incorrectly describes the image as upside down and suggests rotating it. After rotating with sips -r 180, the image is now actually broken for all other viewers, but Claude may still perceive it as flipped.

Steps to Reproduce

  1. Take an HEIC image from an iPhone that displays correctly in Preview/Finder
  2. Convert it to JPEG: sips -s format jpeg input.HEIC --out output.jpg
  3. Ask Claude Code to read the image using the Read tool
  4. Claude describes the image as upside down
  5. If you let Claude "fix" it with sips -r 180, the image is now actually upside down in all viewers
  6. Reading again, Claude may still see it as flipped, leading to repeated rotations

Note: The root cause appears to be that sips preserves EXIF orientation metadata from the HEIC, and Claude's image processing pipeline ignores or misinterprets this tag.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.29

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Encountered during a session building a Next.js website with many HEIC-to-JPEG conversions. The bug is particularly problematic because Claude is very confident about its incorrect perception, making it hard to break the rotate-check-rotate loop without the user explicitly telling Claude to stop.

Workaround: Don't let Claude rotate. The converted image is correct for all consumers (browsers, Next.js Image component, etc.). Tell Claude to ignore its visual assessment of orientation.

View original on GitHub ↗

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