Draft: content in review, not yet public.
← back
Receipt · Running since February 2026

The assistant in my pocket that can no longer crash its own host

Python · Slack Bolt + Socket Mode · Claude Agent SDK · SQLite

Trig, the AI assistant I built, runs on a Mac Mini in another room. This puts it in my pocket: a Slack DM or mention becomes a conversation with the same memory my desk sessions use.

Each thread is its own persistent session, keyed in SQLite so it survives restarts and a thread still feels like one continuing chat days later. Memory is scoped by who is asking. I get the full context; my VA, Carla, gets only her own operating file, with no personal or strategic detail; anyone unrecognised is dropped before a reply is ever generated.

Consequential actions sit behind a two-layer gate. The first layer is a hard block that stops the bot ever issuing a command to restart its own host process, and it cannot be overridden by any approval. The second requires an explicit approval phrase before a state-changing action runs, while read-only checks pass through freely. The first layer exists because the bot once did restart itself mid-reply; it is now structurally unable to.

An action request passes through two gates before it runs. Layer 1 is a hard block: the single command to restart the bot's own host process is structurally impossible and cannot be overridden by any approval. Layer 2 is an approval gate: read-only checks pass through freely, while state-changing actions need an explicit approval phrase. Only then does the action run.
Every consequential action crosses two gates; the one command that once crashed the host is now structurally impossible.