Docs/Desktop app

Desktop app

Hooks screen

The approved catalog and the per-hook decision that goes with it: what a policy does, why it exists, which events it gates, and whether the live session in front of you has it enabled. Three zones — facets, table, inspector. The catalog itself is read-only here; the sealed registry model is hook-model.

The approved catalog and the per-hook decision that goes with it: what a policy does, why it exists, which events it gates, and whether the live session in front of you has it enabled. Three zones — facets, table, inspector. The catalog itself is read-only here; the sealed registry model is hook-model.

#Header and machine selection

Title Hooks; scope session <first-8> when a live session is selected on Session; freshness counts policies. Reveal source is enabled only when the selected hook has an archived source path. The compact MACHINE SELECTION panel shows All hooks or Only N selected, and in only mode offers Select all hooks. It states: This selection is machine-wide and operator-owned. A session can only add a hook for itself; it cannot remove one from this selection. The toolbar search prompt is Search hook id, category, event or description, and it matches exactly those four fields.

#Facets

  • Enforcement — All hooks, Blocking (warning tone while any exist), Non-blocking.
  • Category — ranked by count descending, then alphabetically; counts are measured inside the current enforcement scope, so the number beside a category is the number of rows selecting it produces.
  • In this session — only with a live session: Enabled here / Not enabled here (warning tone when anything is not enabled).

The rail footer Selection reads <visible> of <total>.

#Centre

Catalog re-read failed (banner over a stale-but-present catalog) and Catalog unavailable (no catalog at all) carry the loader's error sentence verbatim, with Retry. Loading reads Reading the approved hook catalog. The empty states are exact: This build carries no hooks — The sealed catalog declares no policies. Rebuild Tama against a tama release that does. — and No hook matches this selection with a Clear filters action. The table is HOOK, CATEGORY, EVENTS (count), FLAG, MACHINE. The machine column reads Enforcing, Not selected, Bypassed during emergency disable, or Not read after a state-read failure. The Blocking / Advisory chip marks the minority, so when most of the catalog blocks, the pill moves to the advisory rows.

#Inspector

Eyebrow is the category, title the hook id, badges the status (capitalized; success only for active) plus Blocking. Sections: What it does, Why it exists, Side effects — the registry's own prose — then EVENTS with a per-event Blocking chip, then Source (No archived source path for sealed-backend hooks), Command, and On this machine with the same machine status as the table. Unselected: Choose a policy to read what it does, why it exists, which events it runs on, and whether the live session has it enabled.

#Machine and session mutations

The operator can choose Add to machine selection or Remove from machine selection in the inspector, and Select all hooks in the machine panel. These selection changes do not use the emergency confirmation dialog. Their progress text is Changing the machine-wide hook selection… or Selecting every registered hook on this machine…; success is <id> is selected on this machine., <id> is not selected on this machine., or Every registered hook is selected on this machine. Backend refusal text is shown verbatim in the same mutation bar.

Only mode cannot become an empty selection. For its sole selected hook, the remove action is unavailable and the inspector explains: At least one hook must remain selected. Choose Select all hooks, or add another hook first.

With a live session, the inspector separately adds In <agent> session: Enabled / Not enabled, and — only when not enabled — Enable in this session. Session enable remains additive to the machine selection and needs no dialog. During emergency disable, it writes only a generation-bound allowlist entry for that session (concepts/session-enable).