{"version":"2.1.277","anchor":"plugin-fsread-can-now-request-raw-bytes-base64-instead","canonical_anchor":"plugin-fsread-can-now-request-raw-bytes-base64-instead","heading":"Filesystem bridge gains network-location checks, ancestor search bounds, and read\/stat options","tier":"use","area":"Plugin API","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277\/e\/plugin-fsread-can-now-request-raw-bytes-base64-instead","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277","markdown":"### Filesystem bridge gains network-location checks, ancestor search bounds, and read\/stat options\n\nThe plugin\/hook filesystem bridge can now reject remote paths, bound ancestor searches, read raw bytes, and report symlink info\n\n**What**\n\n- Skill\/tool file-path arguments now reject a \"network location not reached from here\" (for example a different git remote or host than the current worktree), checked on both the existing path parameter and a new `below` parameter.\n\n- The ancestor CLAUDE.md\/memory-file search now skips remote workspaces, returning early with a log message, and accepts an optional `below` boundary so the upward directory walk stops once it would go above that path.\n\n- The plugin\/hook filesystem bridge's `read` and `stat` calls now accept an options object: `as` for read encoding (defaulting to `\"text\"`) and `resolve` for stat (defaulting to `false`); `ancestors` also gained the `below` bound.\n\n- `$.fs.read` can now return raw bytes as base64 when `as: 'bytes'` is requested, instead of always decoding the content as UTF-8 text.\n\n- `fs.stat` responses now include `isLink` (whether the entry is a symbolic link) and, when `resolve` is set and the link target stays within the allowed paths, a `realPath` field; `list` responses also now include `isLink` per entry.\n\n**Why**\n\nThese changes make the filesystem APIs available to plugins and hooks safer, by blocking paths outside the reachable network location, and more capable, by supporting bounded ancestor searches, raw byte reads, and symlink awareness, which matters for plugins that need to work with binary files or symlinks correctly.\n\n- Area: Plugin API\n- Names: `as: 'bytes'`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 2\/5"}