{"version":"2.1.317","anchor":"project-write-read-first-error-hints-at-passing-the-path-of","canonical_anchor":"project-write-read-first-error-hints-at-passing-the-path-of","heading":"project_write now tells Claude to use the path where it read or wrote a file","tier":"notice","area":"Elsewhere","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317\/e\/project-write-read-first-error-hints-at-passing-the-path-of","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.317","markdown":"### project_write now tells Claude to use the path where it read or wrote a file\n\nproject_write's error and local_path guidance now tell Claude to give the original path of a file it read or wrote, not a shell-made copy\n\n**What**\n\nClaude writes project documents with the `project_write` tool. The tool now gives Claude extra guidance about which file path to use. Both additions appear only when a certain condition holds. The findings do not say what that condition is.\n\n- Read-first error: Claude has to read a file before writing it. The error Claude gets for a file it has not read used to end with \"or pass its text as content.\" It can now add another sentence. If the file is an unchanged copy of a file Claude wrote with a tool, Claude should pass the path where it wrote that file.\n\n- `local_path` guidance: the description of the tool's `local_path` input now adds a note. Claude should give the path where it read or wrote the file, not the path of a copy that a shell command made.\n\n**Why**\n\nIn practice, Claude is steered away from copying a file with a shell command and uploading the copy. It uses the original file it already worked with instead, which helps the existing read-before-write check succeed.\n\n- Area: Elsewhere\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}