Group of 6 Use it now Notable
Plugins and hooks gain renamed filesystem actions, new capabilities for settings/env/session usage, stricter validation, and a new terminal UI system
What
- The plugin capability actions
fs.readFile,fs.writeFile, andfs.listDirare renamed tofs.read,fs.write, andfs.list(including the underlying IPC event name). - Plugins and hooks gain four new capabilities:
session.usage(read session usage stats),settings.read(read merged settings from a named source), andenv.get/env.set(read and write environment variables) — all fully wired with permission checks and handlers. - New validation guards these and other hook APIs: a hook's
on('event')matcher can't be a nested object matched against a primitive;next(e)handlers forenv.get/env.setcan only change the value's data, not other fields; andui.messagecalls can't rewrite fields likesurface,component,requestId,element, ormodule(onlydatamay change), and are rejected if their serialized data is too deeply nested or too large. - A large new subsystem lets plugins mount custom terminal UI elements ("Clients") declared via a
surfacefield inhooks.json. It handles rendering, mounting/unmounting, resizing, mouse and keyboard input, hover/focus state, a row-budget that can reject renders pushing a dialog over its row limit, and message dispatch between the plugin and its UI.
Why Together these give plugins and hooks a broader, more capable API — access to environment variables, settings, and session usage, plus the ability to draw real interactive terminal UI — while the renamed, more consistent action names and new validation keep that expanded surface from letting a plugin corrupt data it shouldn't touch or send oversized payloads.
Names in the bundlefs.readfs.writefs.listsettings.readenv.get
Documented inapi/build-with-claude/files