#!/usr/bin/env node // PreToolUse guard:人格鎖驗證 + 跨人格資料隔離(唯一的強制執行點)。 // // 擋下的情形: // * 讀寫非「本 session 當前人格」的人格目錄(含 Read/Write/Edit/Glob/Grep/Bash) // * guest(persona-guest sub agent)寫入任何人格檔案,或換讀別的人格 // * CLI 帶假的 --session(冒用其他程序身分)/主程序冒用 --as-guest // * 目標人格的鎖屬於其他還活著的程序 import { readEvent, respond } from "./_hook.mjs"; import * as pl from "../scripts/persona-lib.mjs"; const event = readEvent(); if (!event) process.exit(0); let result; try { result = pl.guardDecide(event); } catch (err) { // guard 自己壞掉不該擋住整個 session process.stderr.write(`persona guard 內部錯誤:${err.message}\n`); process.exit(0); } if (result.decision !== "deny") process.exit(0); respond({ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: `[jsc-persona 隔離] ${result.reason}`, }, });