用途:freeze 用于在会话期间把文件编辑锁定到某个目录,阻止对边界外文件的修改,避免调试时误改无关代码,或把改动限定在一个模块内。触发场景包括用户要求“freeze”“restrict edits”“only edit this folder”“lock down edits”。
主要能力:对 Edit、Write、NotebookEdit 三类操作生效。钩子从工具输入 JSON 中读取 file_path,或从 NotebookEdit 读取 notebook_path,判断路径是否以冻结目录开头;不在边界内则返回 permissionDecision: "deny" 阻止操作。策略为 fail-closed:无法解析的工具载荷会被拒绝;能解析但不含路径字段的非文件工具则放行。符号链接按最终组件解析,边界内指向外部的链接会按其目标检查。目录末尾的 / 可避免 /src 误匹配 /src-old。
使用方式:运行 /freeze 后,通过 AskUserQuestion 询问要限制到的目录,用户以文本输入路径。随后用共享状态写入器设置边界:bash "$HOME/.claude/skills/gstack/freeze/bin/freeze-state.sh" set "<user-provided-path>"。仅在辅助脚本成功时报告成功;遇到 FREEZE_BUSY 或异常状态应保留状态并请用户检查恢复,不要直接写入或删除状态文件。设置后提示用户编辑已限制到该路径,改边界需再次运行 /freeze,移除需运行 /unfreeze。
限制:仅作用于 Edit、Write、NotebookEdit,Read、Bash、PowerShell、Glob、Grep 不受影响;它防止误操作,不是安全边界,sed、Set-Content 等命令仍可修改边界外文件。边界会持久保存,直到通过状态文件显式移除;结束或终止对话不会清除已持久化的状态。其他细节资料暂未提供。