recall-before-claim · git:20260523.6463e9f · 2026-05-23 · sha256 7787878d4ec821cf

recall-before-claim git:20260523.6463e9fA

Immutable. This exact content is served forever at /api/v1/blob/7787878d4ec821cf.

---
name: recall-before-claim
description: Forces a memory_search before the agent sends a message containing a factual assertion that has not yet been grounded this turn. Closes the citation-rate gap from ~40% to ~90%+.
tier: executable
bitterbot:
  always: false
  interceptors:
    - id: recall-before-claim:default
      builtin: true
      activates_on: send_message-shaped tools when draft contains an unverified factual assertion
      intervention: require_prereq memory_search
---

# recall-before-claim

This skill installs a deterministic guard around the agent's outgoing messages. When the candidate message contains a factual-assertion shape ("X is Y", "A did B") and no memory tool (memory_search / deep_recall / knowledge_graph_search) has fired in the current turn, the interceptor requires a `memory_search` call against the assertion's subject before the message goes out.

## Why this exists

Bitterbot has a strong memory system, but it only helps the user if the agent actually consults it before making claims. In practice the agent skips memory recall a meaningful fraction of the time — relying on its in-context knowledge instead. This produces ungrounded assertions that the user has no easy way to spot.

The interceptor closes that loop without depending on the LLM remembering to do it.

## What you'll see

When this fires, the agent will run a `memory_search` first, integrate the result, and then send. You may notice slightly longer responses to factual questions; you should notice that the agent stops making confidently wrong statements about things it actually has memory of.

## How it decides not to fire

- Opinion shapes ("I think", "maybe", "in my opinion") are skipped.
- Questions are skipped.
- If a memory tool already fired in the last ~30 seconds, the assertion is considered grounded.

## Implementation

Built-in interceptor `recall-before-claim:default` lives in `src/agents/skills/builtin-interceptors/recall-before-claim.ts`. Fires at most 8 times per session.