A Memory Is Not a Trigger
Type: Open-source — client-agnostic methodology, no project-specific detail.
Created by akbarsha — https://github.com/iamakbarsha1
Distilled from a case where a required per-session action was named in both a
recalled memory and a session-start reminder, yet still didn't happen for a
whole session — the reminders were read and never acted on.
Licence: Released under CC BY 4.0 — share and adapt for any purpose with
credit. Full text: LICENSE at the repository root.
Feedback & Support: If a rule here proves wrong or needs sharpening,
open an issue on the repository or contact the author at the profile link
above. If the problem is the agent not following a rule below rather than
the rule itself, that's an execution failure — acknowledge and correct it.
The core rule
Passively-recalled context is advisory, not control flow. A stored memory, a
note surfaced into the prompt, a banner a startup hook printed, a skill matched
by its description — every one of them is something the agent reads. Reading
is not executing. If nothing in the loop forces the step, a required recurring
action can be present in context, acknowledged, and skipped anyway. So writing
the rule down does not make it fire: storage is not enforcement. For anything
that must happen every session or run, gate it with a deterministic mechanism —
a hook that performs the action, or an always-loaded instruction that forces an
invocation — and treat any reminder-only path as "may not happen."
Real case (sanitized): A required per-session bookkeeping step was wired two
passive ways at once — a memory that got surfaced into context, and a
session-start hook that printed a reminder about it. Both fired every session.
The step still went undone for the entire session: the reminder was read and
not acted on, because nothing in the loop actually executed it. The fix was not
"remember harder" — it was converting the must-do into enforcement: an
always-loaded, mandatory-activation instruction that forces the skill to run,
plus a hook that performs the deterministic half instead of merely mentioning
it. The lesson generalizes to any recurring guardrail, log, or cleanup an agent
is "supposed to remember."
Checks
- Separate advisory context from control flow. A memory, a recalled note,
an injected startup banner, a description-matched skill — all are inputs the
agent reads; none of them run anything. If no hook or forced invocation sits
in the path, classify the action as "may not happen" and design accordingly.
(A per-session logging step named in both a recalled memory and a startup
banner was read every session and skipped anyway.)
- Split "remind" from "perform". A hook that only injects a reminder is
still advisory. If the mechanism can execute the deterministic half of the
work itself, execute it there and leave only the judgment to the agent — a
reminder to do X is weaker than a step that does X.
(A startup hook printed a reminder to log daily changes on every run; the
log stayed empty for weeks because the hook only echoed the reminder text
and never wrote the entry itself.)
- Don't upgrade "I stored it" to "it'll happen". Writing the rule down —
into memory, a doc, a skill description — feels like closure, but the write
is the easy half. The firing is unproven until a mechanism guarantees it;
confirm the action actually happened, don't infer it from the note existing.
(Illustrative: A recurring status update was treated as handled because the rule lived
in a config file; nobody had checked whether the update actually posted,
and it hadn't fired in two weeks.)
Pre-flight check — before you trust a recurring action to fire
If any box is unchecked, you have a note you hope gets read, not an action that
happens — go put a real trigger in the loop.
1---2name: a-memory-is-not-a-trigger3description: Use when you're relying on a stored memory, a recalled note, an injected session-start banner, or a description-matched skill to make a required action happen every session or run — especially a recurring logging, bookkeeping, or guardrail step. Passive context is advisory: the agent reads it and can still skip the action. If it must happen every time, gate it with a deterministic mechanism (a hook that executes it, an always-loaded forced invocation), not a note you hope gets recalled. Triggers on "remember to do X every session", "add a memory so it always…", "why didn't it log / run / update", "it was in the instructions but didn't happen", mandatory recurring steps, and any moment you catch yourself trusting recall to fire a must-do.4---56# A Memory Is Not a Trigger78**Type:** Open-source — client-agnostic methodology, no project-specific detail.910**Created by akbarsha — https://github.com/iamakbarsha1**1112Distilled from a case where a required per-session action was named in both a13recalled memory and a session-start reminder, yet still didn't happen for a14whole session — the reminders were read and never acted on.1516**Licence:** Released under CC BY 4.0 — share and adapt for any purpose with17credit. Full text: `LICENSE` at the repository root.1819**Feedback & Support:** If a rule here proves wrong or needs sharpening,20open an issue on the repository or contact the author at the profile link21above. If the problem is the agent not following a rule below rather than22the rule itself, that's an execution failure — acknowledge and correct it.2324## The core rule2526Passively-recalled context is advisory, not control flow. A stored memory, a27note surfaced into the prompt, a banner a startup hook printed, a skill matched28by its description — every one of them is something the agent *reads*. Reading29is not executing. If nothing in the loop forces the step, a required recurring30action can be present in context, acknowledged, and skipped anyway. So writing31the rule down does not make it fire: storage is not enforcement. For anything32that must happen every session or run, gate it with a deterministic mechanism —33a hook that performs the action, or an always-loaded instruction that forces an34invocation — and treat any reminder-only path as "may not happen."3536**Real case (sanitized):** A required per-session bookkeeping step was wired two37passive ways at once — a memory that got surfaced into context, and a38session-start hook that printed a reminder about it. Both fired every session.39The step still went undone for the entire session: the reminder was read and40not acted on, because nothing in the loop actually executed it. The fix was not41"remember harder" — it was converting the must-do into enforcement: an42always-loaded, mandatory-activation instruction that forces the skill to run,43plus a hook that performs the deterministic half instead of merely mentioning44it. The lesson generalizes to any recurring guardrail, log, or cleanup an agent45is "supposed to remember."4647## Checks4849- **Separate advisory context from control flow.** A memory, a recalled note,50 an injected startup banner, a description-matched skill — all are inputs the51 agent reads; none of them run anything. If no hook or forced invocation sits52 in the path, classify the action as "may not happen" and design accordingly.53 *(A per-session logging step named in both a recalled memory and a startup54 banner was read every session and skipped anyway.)*55- **Split "remind" from "perform".** A hook that only injects a reminder is56 still advisory. If the mechanism can execute the deterministic half of the57 work itself, execute it there and leave only the judgment to the agent — a58 reminder to do X is weaker than a step that does X.59 *(A startup hook printed a reminder to log daily changes on every run; the60 log stayed empty for weeks because the hook only echoed the reminder text61 and never wrote the entry itself.)*62- **Don't upgrade "I stored it" to "it'll happen".** Writing the rule down —63 into memory, a doc, a skill description — feels like closure, but the write64 is the easy half. The firing is unproven until a mechanism guarantees it;65 confirm the action actually happened, don't infer it from the note existing.66 *(Illustrative: A recurring status update was treated as handled because the rule lived67 in a config file; nobody had checked whether the update actually posted,68 and it hadn't fired in two weeks.)*6970## Pre-flight check — before you trust a recurring action to fire7172- [ ] Every action that must happen each session/run has a **deterministic73 trigger** (a hook or a forced invocation), not only a passively-recalled74 memory, note, or banner.75- [ ] Any reminder-only mechanism is treated as **advisory**; each true must-do76 has an executor, not just a mention.77- [ ] The **deterministic half** of the work is performed by the mechanism,78 with only judgment left to the agent.79- [ ] You **verified the action actually fired** at least once — not merely80 that the instruction or memory exists.8182If any box is unchecked, you have a note you hope gets read, not an action that83happens — go put a real trigger in the loop.