AI Memory Settings
Control how aggressively SproutOS saves new memories, set memory limits, and configure named playbooks the agent can fetch on demand.
The AI Memory settings control two things: how freely the agent saves new memories on its own, and how your memory library is capped. Getting these right means fewer unwanted memories cluttering your list and fewer times you have to clean up after an overly eager agent.
Save Behavior Presets
Strict, Loose, or Custom - control how aggressively the agent saves memories during a session.
Confidence and Triggers
How trigger types map to confidence scores, and when saves go to pending review vs. active.
Memory Limits
Soft cap warns at 500. Hard cap auto-archives at 1,000 to keep things clean.
Slug-Callable Memories
Give a memory a name and the agent can fetch it on demand for specific tasks.
Here's how each setting works.
What are the save behavior presets?
The preset controls the auto-save threshold - the confidence level the agent must reach before it saves a memory on its own. A higher threshold means fewer automatic saves. A lower threshold means the agent saves more freely.
| Preset | What it means | Best for |
|---|---|---|
| Strict (default) | Agent only saves when you clearly told it to, or corrected the same behavior twice. Low-confidence inferences go to Pending review instead. | Most users - keeps your memory list clean and intentional |
| Loose | Agent saves more freely, including inferences and implied context from the conversation. More memories land as Active instead of Pending review. | Power users who want the agent to capture context automatically with minimal friction |
| Custom | You set the threshold yourself (0.0 to 1.0) and choose whether schema violations block the save or just warn. | Teams with specific quality requirements or workflows |
Start on Strict. If you find yourself manually creating memories for things the agent should have caught on its own, switch to Loose. You can always tighten it back up.
How does confidence work?
When the agent saves a memory, it must include a trigger type - the reason this save fired. The trigger maps to an initial confidence score:
| Trigger | Score | When it fires |
|---|---|---|
explicit_save | 0.90 | You explicitly told the agent to remember something - "save this," "from now on always do X." |
repeated_correction | 0.85 | You corrected the same agent behavior two or more times in a session. |
unusual_confirmed | 0.75 | The agent offered an unusual choice and you confirmed it - "yes, exactly," "keep doing that." |
fact_stated | 0.70 | You stated a fact about yourself, your team, or the project that isn't recoverable from code or git history. |
inferred | 0.40 | The agent saved without one of the four triggers above firing. This is the fallback when the agent decides to save on its own. |
The save then compares confidence against the site's threshold:
- Above the threshold - memory lands as Active and is available to the agent on the next session.
- Below the threshold - memory lands as Pending review and shows up in the badge at the top of the AI Memory tab. You approve or reject each one. If nothing happens within 7 days, SproutOS automatically promotes it to Active so the queue doesn't stagnate.
How presets affect the threshold
- Strict (default): threshold = 0.80. Only
explicit_saveandrepeated_correctionclear it automatically. Everything else waits for your review. - Loose: threshold = 0.40. Almost every save passes automatically, including
inferredones. The pending review queue is rarely used. - Custom: you set the threshold value (0.00-1.00).
Why inferred is the lowest score
Inferred saves are the ones most likely to be junk - the agent guessed something was worth remembering without a clear signal from you. SproutOS defaults them to 0.40 to hold them in pending review under the Strict preset.
A well-prompted agent rarely saves without a clear trigger. If your pending queue fills up with inferred saves, that's a signal the connected agent needs tighter prompting.
How do memory limits work?
SproutOS enforces two caps on your memory library.
The soft cap is 500 active memories. When you reach 90% of that (450 memories), SproutOS shows a warning in the dashboard. Saves are not blocked - it's just a signal to review and archive memories you no longer need.
The hard cap is 1,000 memories. When a new save would push you over 1,000, SproutOS automatically archives the lowest-confidence non-pinned memory to make room. If every memory is pinned, the save is blocked entirely until you manually archive something.
Archived, Stale, and Disputed memories don't count against either cap.
What are slug-callable memories?
A slug-callable memory is a named playbook the agent can fetch on demand. Instead of being injected automatically into every session, it sits in the background until the agent needs it for a specific task.
How to set one up: Open any memory's edit form and fill in the Slug field. Use lowercase letters, digits, and hyphens only. Max 100 characters. The slug must be unique across your site.
Once a slug is set, SproutOS appends that memory's name and description to the agent system prompt as a catalogue entry. The agent can then call sprout/memory-get with the slug to load the full content when a task calls for it.
When to use a slug instead of Always applied:
Use a slug when the memory is only relevant for specific tasks - not every session. A memory you need for every session belongs on Always applied. A memory for a particular kind of task belongs on a slug.
Example: A memory with slug brand-voice contains your full brand writing guidelines. You don't need those guidelines injected into a session where you're debugging a plugin conflict. But when you ask the agent to write copy, it fetches brand-voice automatically and applies it.
Good slug names are short and task-oriented: brand-voice, seo-rules, staging-creds, image-style. The agent uses the slug name and description to decide when to fetch it - a clear name makes that decision more reliable.
Frequently Asked Questions
On Strict, the agent only saves automatically when you explicitly asked it to remember something, or when you corrected the same behavior at least twice. Everything else goes to Pending review or isn't saved at all. On Loose, the agent also saves inferred context - things it picked up from the conversation without you explicitly saying "remember this." Loose produces more memories with less effort, but also more noise to clean up.
Use Always applied for context the agent needs in every session - your house rules, your site profile, your current sprint goals. Use a slug for context that only matters for specific tasks. If the memory is relevant in maybe 20% of sessions, a slug is the right call. Keeping Always applied lean (under 10 memories) also keeps your session startup fast and focused.
No. The audit log stores a SHA-256 hash of the content, not the content itself. You can verify that the AI saved a specific memory with a specific fingerprint, but a database leak of the audit log alone doesn't reveal what the memory said. The full content lives only in the memory record, protected by WordPress's existing capability checks.
No. The audit log lives in a custom database table that isn't exposed via the standard WordPress REST API. Querying it requires admin capabilities through SproutOS's own routes. No third-party plugins can access it without explicit integration code.
Everything stays in your WordPress database. No external API calls, no telemetry. The audit log sits on your own server alongside your WordPress content. If you operate under GDPR, memory records and the audit log are subject to the same data-export and right-to-erasure mechanisms as any WordPress post.
By default, your memories and the audit log stay in the database. You can reinstall and pick up where you left off. If you want a full cleanup on uninstall, SproutOS includes a standard WordPress uninstall handler that removes all tables and options when you delete the plugin from the WordPress admin.