Read tool fails with ENOENT on file paths containing smart apostrophe (U+2019)
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?
The Read tool cannot open files whose paths contain a right single quotation mark / smart apostrophe (', U+2019). The tool returns ENOENT even though the file exists on disk.
Both the built-in Glob tool and the @-file-mention feature in the chat successfully recognize and locate the file. But passing the exact same path to the Read tool results in ENOENT. The U+2019 character appears to be getting normalized or stripped somewhere in the Read tool's path resolution.
What Should Happen?
The Read tool should open the file successfully, consistent with Glob and @-mentions.
Steps to Reproduce
- Have a file with a smart apostrophe (U+2019) in the filename. In this case it's a Zotero-managed PDF:
```
/Users/work/Zotero/storage/QVK89Q74/kim_et_al._2024_consumers'_attachment_to_meat...pdf
'` between "consumers" and "_attachment" is U+2019, RIGHT SINGLE QUOTATION MARK)
(The
- Confirm the file exists — Claude Code's built-in Glob tool returns the path successfully, and
@-mentioning the file in chat correctly identifies it as a 12-page, 1.4MB PDF.
- Pass the path to the Read tool with
pages: "1-3".
- Read returns:
ENOENT: no such file or directory
- Multiple attempts with different representations of the character (literal smart apostrophe, unicode escape
\u2019, straight ASCII apostrophe) all fail.
Error Messages/Logs
ENOENT: no such file or directory, stat '/Users/work/Zotero/storage/QVK89Q74/kim_et_al._2024_consumers'_attachment_to_meat_association_between_sensory_properties_and_preferences_for_plant-base.pdf'
Claude Model
Opus
Is this a regression?
Unknown
Claude Code Version
2.1.81
Platform
Anthropic API
Operating System
macOS (Darwin 23.6.0)
Terminal/Shell
zsh
Additional Information
- This is a common issue with Zotero-managed files, which frequently have smart apostrophes in auto-generated filenames derived from paper titles (e.g., "consumers' preferences").
- Workaround: copy the file to a path without the smart apostrophe via Bash.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗