gemini-cli fix: atomic writes were silently overwriting read-only files and splitting hard links
elberthc-byte · ghdev · 2026-10-14
google-gemini/gemini-cli's atomic write (#29499) made StandardFileSystemService.writeTextFile silently overwrite read-only files and split hard links: rename(2) checks only directory permissions, so a 0444 file was replaced without EACCES, and renaming changed the inode, leaving other hard-link names on stale content.
The PR restores both behaviors with two guards: a fs.access(realPath, WOK) check on existing destinations (the kernel's own answer, covering ACLs, immutable files, and read-only mounts — the same approach Vim uses for 'readonly' detection), and in-place writes when stat.nlink > 1, deliberately trading atomicity for correctness just like Vim's backupcopy=auto. A single stat now supplies both mode and link count; the only new syscall is access. New files are unaffected.
More from coding & agent
- Claude cut a 2.6-hour video export to 20 minutes — but only after being told to rebuild the server — byhewar · 2026-10-23
- 3 flight-booking rules my AI agent checks that I'd never do by hand — Efistoffeles · 2026-10-23
- OpenJet claims Qwen3.8-27B coding runs 1.9x faster than llama.cpp on one RTX 3090 — JeremyCMorgan · 2026-10-23
- Building an autonomous SEO agent in Hermes with three skills: programmatic pages, Keywords Everywhere, DataForSEO — EXM7777 · 2026-10-23
- Building a sports betting AI agent with onchain execution and human approval by default: architecture and lessons — Dry-Comfortable-2678 · 2026-10-23
- How do you audit AI agent decisions in regulated workflows? A field survey — Ok_Way_1993 · 2026-10-23