Mneme HQ + Paperclip
Paperclip’s claude_local adapter drives Claude Code in your project workspace — so Mneme’s existing PreToolUse hook enforcement applies unchanged. A P1-gated validation run (August 22–23, 2026) proved deterministic enforcement under both Paperclip transports with zero Mneme code changes.
Validation verdict: native PASS, no code required
The compatibility experiment closed with a frozen manifest, an A/B/C × T1–T4 run matrix, and published raw artifacts (transcripts, hook verdict logs, run logs). Results:
- 6/6 forbidden edits blocked at the hook layer — deterministically, in both transports
- All compliant edits landed without interference
- Block → recover cycles completed under both classic CLI and ACP: the agent read the block reason and produced compliant output
- Isolation test passed via fixture-unique sentinel decision IDs (correct memory-root discovery)
- Zero Mneme production modifications. ADR-017 and ADR-020 behaved exactly as specified under both transports
This is why the badge reads “Validated compatibility,” not “Native integration.” Mneme works unchanged through Paperclip’s transports — there is no dedicated Mneme-Paperclip adapter to maintain.
How it works
Paperclip (claude_local adapter) ↓ spawns Claude Code in the project workspace ↓ .claude/settings.json PreToolUse hook → mneme-hook ↓ mneme check against the workspace's .mneme/project_memory.json
Requirements are the same as any other Claude Code setup:
mneme-hookon the PATH visible to the Claude Code process- A committed
.mneme/project_memory.jsonin the repo Paperclip realizes as the agent’s workspace - Hook registration via plugin or settings:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write|MultiEdit",
"hooks": [{ "type": "command", "command": "mneme-hook", "timeout": 30 }]
}
]
}
}
Proven configuration
- Adapter:
claude_local, engine default (auto→ ACP selected) and explicitengine:"cli"— both enforce identically - Deterministic sessions: use
mode:"oneshot"for one task per session - Point work at a repo via a project workspace (
sourceType:"local_path",cwd= repo path). Do not rely onadapterConfig.cwdalone — as of paperclipai 2026.817.0 it is superseded by workspace realization
Version-specific caveat: paperclipai 2026.817.0
Known upstream defect. Paperclip injects a placeholder ANTHROPIC_API_KEY="sk-ant-..." into spawned Claude processes, which overrides subscription login and fails every run with 401. Workaround — set an empty override on the agent:
{ "adapterConfig": { "env": { "ANTHROPIC_API_KEY": "" } } }
This is a Paperclip-side issue, not a Mneme issue. Fixed upstream versions may make the override unnecessary; remove it once the injection is resolved.
Operational notes
- Issue titles and phrasing reach the agent verbatim; neutral task titles avoid pre-emptive refusals when you specifically want to exercise enforcement
- Paperclip agents commit completed work — treat their checkouts accordingly
Evidence
- PR #315 — validation close-out and proven configuration
- docs/validation/paperclip-compat-report.md — full report with failure classification and decision record
- docs/validation/paperclip-compat-run-matrix.md — A/B/C × T1–T4 matrix with gates and metrics
- Raw evidence artifacts — transcripts, diffs, hook verdict log (secrets redacted)
FAQ
Does Mneme need an adapter to work with Paperclip?
claude_local adapter spawns Claude Code in the project workspace, so Mneme’s existing .claude/settings.json PreToolUse hook applies unchanged. The validation closed with a NO CODE REQUIRED verdict.Which Paperclip transports were validated?
engine:"cli") and the default ACP transport (engine:auto resolving to ACP). Both enforced identically across the full test matrix.What did the validation actually prove?
Is there a known Paperclip version issue?
ANTHROPIC_API_KEY that overrides subscription login and fails runs with 401. An empty env override on the agent resolves it until upstream fixes the injection.Governed agent orchestration, zero glue code
If your orchestrator drives Claude Code, Mneme’s enforcement comes along for free — one decision corpus, enforced at the same pre-tool boundary in interactive, orchestrated, and CI contexts.