{"version":"2.1.321","anchor":"write-failure-reasons-and-xlsx-mime-type","canonical_anchor":"write-failure-reasons-and-xlsx-mime-type","heading":"project_write checks versions it has seen and reads local files up to a size setting","tier":"notice","area":"Projects","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321\/e\/write-failure-reasons-and-xlsx-mime-type","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321","markdown":"### project_write checks versions it has seen and reads local files up to a size setting\n\nproject_write refuses writes whose `if_version` does not match what the session saw, gains new failure codes, and reads local files with a configurable limit\n\n**What**\n\nThe `project_write` tool lets Claude write project documents. A version is a value that identifies one state of a document.\n\n- Writing over an existing document no longer reads it back and compares its text. Claude Code looks up the version from what the session has already seen and refuses the write if the `if_version` given does not match. This is behind two switches, `tengu_lovely_rain` and `tengu_lucky_nebula`.\n\n- New failure codes: `project_doc_stale`, `if_version_not_held` and `if_version_not_served`.\n\n- Reading a file from `local_path` now uses a size limit taken from a setting instead of a fixed cap. If refused, Claude is told to read the whole file again first, or pass its text as content.\n\n- The Write tool checks for start-only files before writing.\n\n- A `.xlsx` entry was added to the list of file types.\n\n**Why**\n\nWrites are guarded by version numbers rather than a text read-back, so a document changed by someone else is caught. The size of local files `project_write` will read is no longer fixed.\n\n- Area: Projects\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: no"}