by Goldentrii
Correction-first persistent memory for AI agents. MCP server + SDK + CLI. Compounds across sessions.
# Add to your Claude Code skills
git clone https://github.com/Goldentrii/AgentRecall-XGuides for using ai agents skills like AgentRecall-X.
Last scanned: 7/16/2026
{
"issues": [
{
"type": "npm-audit",
"message": "express-rate-limit: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "fast-uri: fast-uri vulnerable to path traversal via percent-encoded dot segments",
"severity": "high"
},
{
"type": "npm-audit",
"message": "form-data: form-data: CRLF injection in form-data via unescaped multipart field names and filenames",
"severity": "high"
},
{
"type": "npm-audit",
"message": "hono: Hono has CSS Declaration Injection via Style Object Values in JSX SSR",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ip-address: ip-address has XSS in Address6 HTML-emitting methods",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "protobufjs: protobufjs: Denial of service through unbounded Any expansion during JSON conversion",
"severity": "high"
},
{
"type": "npm-audit",
"message": "qs: qs has a remotely triggerable DoS: qs.stringify crashes with TypeError on null/undefined entries in comma-format arrays when encodeValuesOnly is set",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "undici: undici vulnerable to TLS certificate validation bypass via dropped requestTls in SOCKS5 ProxyAgent",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ws: ws: Uninitialized memory disclosure",
"severity": "high"
}
],
"status": "WARNING",
"scannedAt": "2026-07-16T06:18:41.942Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how AgentRecall-X compares with popular alternatives.
AgentRecall-X is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Goldentrii. Correction-first persistent memory for AI agents. MCP server + SDK + CLI. Compounds across sessions. It has 371 GitHub stars.
AgentRecall-X returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/Goldentrii/AgentRecall-X" and add it to your Claude Code skills directory (see the Installation section above). AgentRecall-X ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
AgentRecall-X is primarily written in JavaScript. It is open-source under Goldentrii on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh AgentRecall-X against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
name: agent-recall
description: >-
Persistent compounding memory for AI agents. 5 default MCP tools: session_start,
session_end, remember, recall, check. Full surface: 6 tools with --full (adds
check_action); 13 tools with AR_EXTRAS=1 --full.
Two-verb model: inhale (session_start) and exhale (session_end).
Correction-first memory with decision trail tracking,
watch_for warnings, palace rooms with salience scoring, cross-project insight
matching, same-day journal merging, ambient recall hooks. Local markdown only.
Zero cloud, zero telemetry, Obsidian-compatible.
Optional Supabase backend: when configured via ar setup supabase, recall()
uses pgvector cosine similarity on OpenAI/Voyage embeddings instead of keyword
search — same API, semantic understanding. Gracefully degrades to local search
if not configured.
origin: community
version: 3.4.30
author: Goldentrii
platform: clawhub
install:
mcp:
command: npx
args: ["-y", "agent-recall-mcp"]
transport: stdio
env: {}
security:
network: none
credentials: none
filesystem: read-write ~/.agent-recall/ only
telemetry: none
cloud: none
tags:
AgentRecall is a persistent memory system. Default surface: 5 tools (two verbs + three essentials). Full surface: 6 tools via npx agent-recall-mcp --full (adds check_action); 13 tools with AR_EXTRAS=1 npx agent-recall-mcp --full. This guide describes how and when to use them.
Two-verb model: session_start (inhale — load context) and session_end (exhale — save and compound). Everything else is available but secondary; most agents never need more than the default 5. See Automaticity Law below.
AgentRecall requires the MCP server to be running. If tool calls fail with "unknown tool", the human needs to install it first.
Visual setup guide (all 13 clients, copy-paste prompts): open
warroom/install.htmlfrom the repo, or the GitHub raw link in a browser.
Claude Code:
claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp
Cursor (.cursor/mcp.json):
{ "mcpServers": { "agent-recall": { "command": "npx", "args": ["-y", "agent-recall-mcp"] } } }
VS Code / GitHub Copilot (.vscode/mcp.json):
{ "servers": { "agent-recall": { "command": "npx", "args": ["-y", "agent-recall-mcp"] } } }
Windsurf (~/.codeium/windsurf/mcp_config.json):
{ "mcpServers": { "agent-recall": { "command": "npx", "args": ["-y", "agent-recall-mcp"] } } }
Codex:
codex mcp add agent-recall -- npx -y agent-recall-mcp
Hermes Agent (~/.hermes/config.yaml):
mcp_servers:
agent-recall:
command: npx
args: ["-y", "agent-recall-mcp"]
Roo Code (.roo/mcp.json):
{ "mcpServers": { "agent-recall": { "command": "npx", "args": ["-y", "agent-recall-mcp"] } } }
Any MCP-compatible agent:
command: npx
args: ["-y", "agent-recall-mcp"]
transport: stdio
AgentRecall's default surface provides 5 tools. Start the server with --full to add check_action (6 tools); set AR_EXTRAS=1 together with --full to also enable the quarantined extras (13 tools).
Default tools (always available): session_start, session_end, remember, recall, check
Full-mode only (--full): check_action
Extras (AR_EXTRAS=1 --full, quarantined in the 2026-07-05 purity census): pipeline_open, pipeline_close, pipeline_list, pipeline_current, pipeline_show, register_rule, digest
session_startWhen: Beginning of a session, to load prior context.
What it returns:
project — detected project nameidentity — who the user is (1-2 lines)insights — top 5 awareness insights (title + confirmation count + severity)active_rooms — top 5 palace rooms by salience (with staleness flag + last_updated)
(Palace = your project's long-term knowledge store, organized into topic rooms like "architecture", "goals", "blockers". Salience = relevance score 0-1 based on recency, access frequency, and connections. Rooms with stale=true haven't been updated in 7+ days.)cross_project — insights from other projects matching current contextrecent — today/yesterday journal briefswatch_for — predictive warnings from past correction patterns + decision calibrationcorrections — P0 behavioral rules (max 10, always loaded, never expire)resume — structured re-entry briefing: last_date, last_trajectory, sessions_countHow to use the response:
identity to calibrate your tone and approachinsights — these are battle-tested lessons. Follow them.watch_for — these are patterns where you've been wrong before on this project. Adjust your approach.recent to understand where the last session left offExample call:
session_start({ project: "auto" })
rememberWhen: You learn something worth keeping. A decision, a bug fix, an insight, a session note.
What it does: Auto-classifies your content and routes it to the right store:
You do NOT need to decide where it goes. Just describe what to remember.
How to use:
remember({
content: "We decided to use GraphQL instead of REST because the frontend needs flexible queries",
context: "architecture decision" // optional hint, improves routing
})
Returns: routed_to (which store), classification (content type), auto_name (semantic slug generated)
recallWhen: You need to find something from past sessions. A decision, a pattern, a lesson.
What it does: Searches ALL stores at once using Reciprocal Rank Fusion (RRF) — each source (palace, journal, insights) ranks internally, then positions merge so no single source dominates. Journal entries decay fast via Ebbinghaus curve (S=2 days); palace entries are near-permanent (S=9999). Returns ranked results with stable IDs.
How to use:
recall({ query: "authentication design", limit: 5 })
Feedback: After using results, rate them. Ratings use a Bayesian Beta model — the mathematically optimal estimate of true usefulness:
recall({
query: "auth patterns",
feedback: [
{ id: "abc123", useful: true }, // Beta(2,1) → ×1.33 next time
{ id: "def456", useful: false } // Beta(1,2) → ×0.67 next time
]
})
Feedback is query-aware — rating something "useless" for one query doesn't penalize it for unrelated queries.
session_endWhen: End of session, after work is done.
What it does in one call:
How to use:
session_end({
summary: "Built auth module with JWT refresh rotation. Fixed CORS bug.",
insights: [
{
title: "JWT refresh tokens need httpOnly cookies — localStorage is vulnerable",
evidence: "XSS attack vector discovered during security review",
applies_when: ["auth", "jwt", "security", "cookies"],
severity: "critical"
}
],
trajectory: "Next: add rate limiting to API endpoints"
})
Rules for insights:
applies_when keywords determine when this insight surfaces in future sessions across ALL projects.Return fields:
journal_written — boolean, true if journal entry was savedawareness_updated — boolean, true if any insight was storedpalace_consolidated — boolean, true if palace rooms were updatedinsights_processed — number of insights acceptedquality_warnings — advisory warnings if insights are too short, lack evidence, or use event-verb phrasing (never blocks saves)card — formatted save summary (box-drawing card)merge_suggestions — array of similar recent entries (optional)checkWhen: Before executing a complex task where you might misunderstand the human's intent. Also for tracking decision quality over time.
What it does:
watch_for — patterns from past corrections on this projectsimilar_past_deltas — times you misunderstood similar goals beforeTwo-call pattern (correction tracking):
Call 1 — before work:
check({
goal: "Build REST API for user management",
confidence: "medium",
assumptions: ["User wants REST, not GraphQL", "CRUD endpoints", "PostgreSQL backend"]
})
Read the watch_for response. If it says "You've been corrected on API style 3 times", ASK the human before proceeding.
Call 2 — after human corrects (if they do):
check({
goal: "Build REST API for user management",
confidence: "high",
human_correction: "Actually wants GraphQL, not REST",
delta: "API style preference — assumed REST, human prefers GraphQL"
})
This feeds the predictive system. Future agents on this project will get warnings.
Decision trail (Bayesian-inspired calibration):
For major decisions, track confidence and outcome to calibrate judgment over time:
check({
goal: "Use GraphQL instead of REST",
confidence: "medium",
prior: 0.7, // initial confidence (0-1)
evidence: [
{ factor: "Frontend needs flexible queries", direction: "supports", weight: 0.2 },
{ factor: "No GraphQL experience on team", direction: "weakens", weight: 0.3 }
],
posterior: 0.55, // updated confidence after evidence
outcome: "rejected" // final result: "confirmed", "rejected", "partial", or free text
})
When outcome is provided, the decision trail is persisted to the palace decisions room. After 3+ closed decisions, session_start surfaces calibration warnings: "Your priors average 0.8 but outcomes average 0.5 — you're overconfident."
Returns: recorded, watch_for, similar_past_deltas, decision_id (when outcome provided), decision_trail_saved, calibration_note
npx agent-recall-mcp --full)Most agents never need these — the default 5 tools carry all compounding memory value. The 2026-07-05 purity census (owner-approved) stripped the MCP full surface to
check_action; the former pipeline/rule/digest tools are quarantined behindAR_EXTRAS=1, and everything else moved to thearCLI.
check_actionWhen: Right before a risky or hard-to-reverse action — publish, push, deploy, delete, credential exposure, external send.
What it does: Pre-action safety matcher — checks the described action against active corrections and rules, and returns matching warnings before you act.
check_action({ action_description: "npm publish agent-recall-mcp" })
AR_EXTRAS=1 npx agent-recall-mcp --full)Quarantined in the purity census for near-zero organic use; core logic is intact and the tools re-register when the env var is set:
pipeline_open / pipeline_close / pipeline_list / pipeline_current / pipeline_show — project narrative spine (phases with reflection fields)register_rule — save an IF-THEN behavior policydigest — context cache (store / recall / read / invalidate pre-computed analysis)memory_query, skill_write, skill_recall, skill_list, dashboard_export, session_end_reflect, project_board, project_status, bootstrap_scan, and bootstrap_import were removed from the MCP surface in the 2026-07-05 purity census. Their CLI paths remain intact. First-time bootstrap now runs through the CLI:
ar bootstrap # scan and show what's available
ar bootstrap --dry-run # preview what would be imported
ar bootstrap --import # import all new projects
ar bootstrap --import --project my-app # import one project
Bootstrap scan is read-only (never writes to your machine or to AgentRecall); import only writes to ~/.agent-recall/, skips .env, credentials, .pem, and .key files, and never double-imports projects already in AgentRecall.
1. session_start() → load context, read insights and warnings
2. Present brief to human → "Last session: X. Insights: Y. Ready."
3. check() if task is complex → verify understanding before work
4. remember() when you learn something → auto-routes to right store
(stores: journal for daily activity, palace rooms for persistent decisions, awareness for cross-project insights)
5. recall() when you need past context → searches everything
6. check() before major decisions → verify understanding
7. check() with corrections if any → record what human corrected
8. session_end() → save journal + insights + consolidation
9. Done — all data saved locally (only push to git if user explicitly asks)
Each layer feeds the next. The system gets better the more you use it.
SAVE: remember("JWT needs httpOnly cookies")
→ Auto-named: "lesson-jwt-httponly-cookies-security"
→ Indexed in palace + insights
→ Auto-linked to "architecture" room (keyword overlap)
→ Salience scored: recency(0.30) + access(0.25) + connections(0.20) + ...
RECALL: recall("cookie security") — 3 sessions later, different project
→ Finds the JWT insight via keyword match + graph edge traversal
→ Agent rates it useful → feedback boosts future ranking
→ Next recall on similar query → this result surfaces higher
COMPOUND: After 10 sessions
→ 200-line awareness contains cross-validated insights
→ watch_for warns about past mistakes before they repeat
→ Corrections auto-promote to awareness at 3+ occurrences
→ Graph connects related memories across rooms automatically
session_start at the beginning. Insights from past sessions prevent repeated mistakes.session_end when done. If the session produced decisions, insights, or corrections, save them.remember calls during work. More is noise.check for ambiguous tasks. 5 seconds of verification beats 30 minutes of wrong work.watch_for warnings. If session_start or check returns warnings, adjust your approach./arstatus shows no projects, ar bootstrap --import (CLI) discovers what's already on your machine and imports it in seconds.All data is local markdown + JSON at ~/.agent-recall/. No cloud, no telemetry, no API keys.
~/.agent-recall/
awareness.md # 200-line compounding document (global)
awareness-state.json # Structured awareness data
awareness-archive.json # Demoted insights (preserved, not deleted)
insights-index.json # Cross-project insight matching
feedback-log.json # Retrieval quality ratings
projects/<name>/
journal/YYYY-MM-DD.md # Daily journals (legacy)
journal/YYYY-MM-DD--arsave--NL--slug.md # Smart-named journals (auto-save)
palace/rooms/<room>/ # Persistent knowledge rooms
palace/rooms/decisions/ # Decision trail records (prior/posterior/outcome)
palace/identity.md # Project intention + goals
palace/graph.json # Memory connection edges
alignment-log.json # Correction history for watch_for
digest/ # Pre-digested context summaries
Obsidian-compatible. Open palace/ as a vault to see the knowledge graph.
| Platform | How to install |
|---|---|
| Claude Code | claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp |
| Cursor | .cursor/mcp.json |
| VS Code / Copilot | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Codex | codex mcp add agent-recall -- npx -y agent-recall-mcp |
| Hermes Agent | ~/.hermes/config.yaml under mcp_servers: |
| Roo Code | .roo/mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Gemini CLI | MCP server config |
| OpenCode | MCP server config |
| Any MCP client | command: npx, args: ["-y", "agent-recall-mcp"], transport: stdio |
All platforms use the same tools. No platform-specific behavior.
The Automaticity Law (measured on the live corpus — 44 projects, 221 journals, 81 corrections, 2026-06-12): push channels (session_start, session_end, correction hooks, ambient recall) showed repeated behavior-changing usage across weeks of real agent sessions. Pull channels — check_action, skill_recall, pipeline_*, memory_query — had zero organic calls, including from the agent that built them.
Every extra tool in the default surface burns tool-definition tokens every session for zero behavioral return. The two-verb model (inhale = session_start, exhale = session_end) carries all compounding memory value. Everything else is available via --full for agents and workflows that explicitly need it.
Corollary: wire before write — a primitive without an automatic trigger will not be used.
~/.agent-recall/ (configurable via --root flag). Does not access files outside this directory unless the agent explicitly passes project-specific paths.ls ~/.agent-recall/ or open it as an Obsidian vault.English · 中文
claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp
claude mcp add --scope user agent-recall -- npx -y agent-recall-mcp
Other MCP clients: { "mcpServers": { "agent-recall": { "command": "npx", "args": ["-y", "agent-recall-mcp"] } } }
"I installed AgentRecall. From now on, when you correct me, I save it as a rule on your disk — plain markdown in
~/.agent-recall/, nothing leaves the machine. Next session I load those rules before I start, so you shouldn't have to say the same thing twice. Say 'save' anytime and I'll checkpoint."
On session start → call session_start (before you act)
When the human corrects you → call remember with type "correction" — saying "noted" is not saving
Before publish/push/deploy/delete → call check with action_description; obey verdict "blocked"
When past context would help → call recall
On "save" / "remember" / exit → call session_end
You tell your agent "don't bump the version without asking." It apologizes, fixes it, and the session ends. Next week a fresh session does it again — the correction lived in a chat log nobody reads.
AgentRecall turns that sentence into a structured, persistent rule, puts it in front of the next agent before it acts, and records whether the mistake came back.
── session 3 ─────────────────────────────────────────────
you › no — never bump the version without asking me first
agent › remember(type: "correction")
✓ saved · severity p0 · applies_when: [release, npm]
── session 9 · new agent, no chat history ───────────────
session_start › project "my-app" · 1 critical correction
watch_for: version bump → ask the owner first
you › ship the fix
agent › Fix is merged. Want me to bump to 1.4.1, or leave the version?
outcome recorded: heeded
Illustrative transcript.
AgentRecall is two things:
applies_when, retraction, outcome — that persists across sessions, projects and agent restarts. Export format: corrections-export/v1, scrubbed on egress.retrieved_count, and every time the agent meets the same situation the outcome is logged as heeded or recurred. No public benchmark measures that step; we built the harness first and publish what it finds, including the unflattering numbers.flowchart LR
A([session start]) --> B["/arstart · session_start<br/>load rules + context"]
B --> C{work}
C -->|need past knowledge| D["/arrecall · recall"]
D --> C
C -->|corrected| R["remember<br/>type: correction"]
R --> L[(corrections<br/>ledger)]
C -->|risky action| K["check"]
L -.-> K
C --> E["/arsave · session_end<br/>journal + compound"]
E --> F([session end])
L -. watch_for .-> B
F -. every K sessions .-> G["/arreflect<br/>consolidate"]
G -.-> A
| Command | When | What it does |
|---|---|---|
/arstart |
First — every session | OPEN. No args → status board across all projects → pick → load that project's rooms, corrections and task recall. /arstart <slug> loads directly; /arstart bootstrap imports existing projects. |
/arsave |
Last — every session | SAVE. Journal + palace consolidation + awareness compounding. /arsave all merges every parallel session of the day. |
/arrecall |
Mid-session | SEARCH. Prior fixes, decisions, patterns for the current task. |
/arreflect |
Every K sessions | CONSOLIDATE. Confirm recurrences, cluster new error classes, propose rule re-abstractions (rule edits stay owner-gated). |
Without
/arstart, a fresh agent has zero orientation. Without/arsave, nothing compounds.
Five tools ship by default. Each description is written for the agent and says when to call it.
| Tool | Call it | What it does |
|---|---|---|
session_start |
First, before acting | Loads corrections, insights and watch_for warnings for the project |
remember |
The moment something is decided or corrected | Saves one fact; auto-routes to journal / palace room / corrections / awareness |
recall |
Whenever past context would help | Ranked search across every store (RRF), with useful feedback that re-weights future ranking |
check |
Before risky or irreversible actions | Matches the plan against known corrections; returns verdict: "blocked" when one overrides it |
session_end |
On save / exit | Writes the journal, promotes insights, records trajectory, optionally opens/closes a pipeline phase |
| Surface | Enable | Tools |
|---|---|---|
| Default | — | the 5 above |
| Full | npx -y agent-recall-mcp --full |
+ check_action (pre-action matcher for publish / push / deploy) |
| Extras | --full + AR_EXTRAS=1 |
+ pipeline_open · pipeline_close · pipeline_list · pipeline_current · pipeline_show · register_rule · digest |
List what your install exposes: npx -y agent-recall-mcp --list-tools.
[!IMPORTANT] The Automaticity Law — why only 5. Memory only compounds if it fires without being asked. Across 44 projects and weeks of real use, the pull tools (
recall,memory_query) saw zero organic calls — including from the agent that built them. Push channels (session_start,session_end, correction hooks) are what change behavior. Every extra default tool costs definition tokens every session for no return. (Self-measured on the owner's store, 2026-06-12.)So on Claude Code, wire the hooks — the loop then runs without agent discipline:
ar hook-start SessionStart load context, show watch_for warnings ar hook-correction UserPromptSubmit capture corrections silently ar hook-ambient UserPromptSubmit inject relevant memories (≥2-word overlap floor) ar hook-save U