Skip to content

Redactions

Memoturn runs a two-stage redaction pipeline on every recorded turn:

  1. Deterministic scan — 25+ regex patterns match API keys, tokens, passwords, private keys, and connection strings. Matched spans are replaced with [REDACTED:type] before the turn is stored.
  2. LLM review — an async pass re-reads the redacted turn and flags anything the regexes missed (novel secret formats, credentials in natural language). Results are classified as confirmed, escalated, or dismissed.

Escalated turns appear in the dashboard’s redactions tab and via the list_redaction_reviews MCP tool.

Terminal window
curl "https://YOUR_API_HOST/v1/projects/my-project/redactions?status=escalated" \
-H "Authorization: Bearer mt_..."
paramtypenotes
status"escalated" | "acknowledged" | "dismissed"Default "escalated"
sincenumber?Start of time window (ms epoch)
toolstring?Filter by originating tool
limitnumber1–200, default 50

Mark a flagged turn as reviewed (keep the redacted content, no further action needed):

Terminal window
curl -X POST https://YOUR_API_HOST/v1/projects/my-project/redactions/TURN_ID/acknowledge \
-H "Authorization: Bearer mt_..."

Delete the turn’s derived memories and mark it as handled:

Terminal window
curl -X POST https://YOUR_API_HOST/v1/projects/my-project/redactions/TURN_ID/forget \
-H "Authorization: Bearer mt_..."

This soft-deletes all memories derived from the turn, evicts it from the hot cache, and broadcasts memory_forgotten events to subscribed clients. The turn row itself is preserved with its redacted content for audit purposes.

The list_redaction_reviews tool exposes the same data to MCP clients:

list_redaction_reviews({ status: "escalated", limit: 10 })

Use it to surface secret leaks an agent should not have written, without subscribing to broadcasts.