Atlas / MCP servers / the-long-ride / engram

engramBLOCK

mcp/the-long-ride/engram

Engram - file-system-based memory management system for AI agents that grows with you & your teams, across agents, projects, and devices.

Verdict
BLOCK
Grade
F
Trust score
43 /100
Exposed tools
12 8r · 4w · 0d
Transport
—
License
GPL-3.0
Stars
6
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](LICENSE) [](https://github.com/the-long-ride/engram) [](https://the-long-ride.github.io/engram/) [](https://www.npmjs.com/package/@the-long-ride/engram)

Engram is a human-owned, file-first memory protocol for AI agents. Grow with you & your teams.

It gives agents memory without giving agents ownership of memory. Durable rules, workflows, and project knowledge live as plain Markdown, reviewed by humans, portable through Git, and usable by any agent.

Full documentation lives on the website: @the-long-ride/engram docs-site

Key Highlights

  • Human in the Loop: Direct CLI saves use A/B/C approval. AI-agent chat saves use an exact-candidate yes / audit / cancel loop before the agent writes with save-session --force. Every candidate preview carries one deterministic Verdict: line (ADD, UPDATE , SUPERSEDE , or NOOP duplicate of ); a SUPERSEDE is applied only after interactive approval, never by --force or autosave.
  • Partial Force Safety: save-session --force saves unrelated ready candidates, but defers candidates that need dependency or duplicate review with ID-only engram load --id ... guidance.
  • Context-Optimized: Routes meaningful task matches plus prerequisites into a compact pack (default: 8 files) to avoid context bloat.
  • Tiered Load Disclosure: Agents get the top load.expand_top hits (default 3) as bodies and every other selected hit plus up to 5 omitted candidates as one-line cards, followed by fetch: engram load --id . Fron
Read from source at commit fa5c66aa979dOBSERVED · 2026-10-13
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add image-size --env GIT_CONFIG_KEY_0=${GIT_CONFIG_KEY_0} --env GIT_CONFIG_KEY_1=${GIT_CONFIG_KEY_1} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "image-size": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "GIT_CONFIG_KEY_0": "${GIT_CONFIG_KEY_0}",
        "GIT_CONFIG_KEY_1": "${GIT_CONFIG_KEY_1}"
      }
    }
  }
}
03

Exposed tools (12)

8 read · 4 write · 0 destructive.

ToolRiskDescription
engramreadA skill.
engram_loadreadLoad routed Engram memory for the current task or query. Text is the agent pack; structured data lists selected_keys, body_keys, card_ids, omitted_ids, and tokens.
engram_routereadPreview which Engram memories match a query: task classification plus routed entries (id, type, scope, score) in load order, not sorted by score.
engram_savewritePreview a human-approved Engram memory save proposal. Does not write silently; returns an approval_token for engram_commit.
engram_save_sessionwritePreview multiple human-approved Engram memory save proposals. Does not write silently; returns an approval_token for engram_commit.
engram_searchreadSearch Engram memory; structured entries carry id, type, scope, and score.
engram_set_rolewriteSet active Engram role filters.
engram_set_rule_variantwriteSet active Engram rule strictness variant.
engram_statusreadShow Engram memory health and status.
engram_verifyreadVerify Engram memory integrity.
indexreadOne-line cards for every visible durable memory.
memoryreadAgent body of one Engram memory (same text as engram load --id).
04

Trust audit

BLOCKgrade F · trust 43/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (11 observation(s))
Network
declared (6 observation(s))
Shell
declared (9 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
src/core/memory/payload-plan.ts
payload-plan.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/commands/config-cmd.ts:17
const dynamicImport = new Function('specifier', 'return import(specifier);') as (specifier: string) => Promise<any>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/commands/workspace.ts:21
const dynamicImport = new Function('specifier', 'return import(specifier);') as (specifier: string) => Promise<any>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/config-db/schema.ts:134
const dynamicImport = new Function('specifier', 'return import(specifier);') as (specifier: string) => Promise<any>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/integrations/markdown-them.ts:34
const dynamicImport = new Function('specifier', 'return import(specifier)') as (specifier: string) => Promise<MarkdownThemModule>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/memory/vector-db.ts:168
const dynamicImport = new Function('specifier', 'return import(specifier);') as (specifier: string) => Promise<any>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/core/memory/take-control-guards.ts:19
'.npmrc', '.pypirc', '.netrc', '.pgpass', '.git-credentials', '.htpasswd', '.dockercfg', 'credentials', 'kubeconfig',
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/core/memory/take-control-guards.ts:20
'id_rsa', 'id_dsa', 'id_ecdsa', 'id_ed25519', 'secrets.json', 'secrets.yaml', 'secrets.yml', 'secrets.toml'
Why it matters. touches a credential store
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/core/web/entry-server.ts:594
'http://127.0.0.1:' + port,
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/core/web/entry-server.ts:618
srv.listen(port, '127.0.0.1', () => resolve('http://127.0.0.1:' + port));
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/core/ingest/structured.ts:9
const source = text.replace(/^/, '');
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/core/memory/freshness.ts:42
const BOM = '';
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/core/system/fsx.ts:207
return JSON.parse(stripTrailingCommas(stripJsonComments(text.replace(/^/u, '')))) as T;
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
tests/cli/take-control-limits.test.mjs:140
'Local database: postgres://admin:S3cretPwLocal@localhost:5432/app',
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
tests/core/redaction-linear.test.mjs:104
'Connect with postgres://admin:S3cretPwLocal@localhost:5432/app for local work.',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/freshness.test.mjs:11
const SECRET = 'sk-live-FRESHNESS0123456789abcdef';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/take-control-repo-map.test.mjs:12
const SECRET = 'hunter2-fixture-secret';
LOWInventory / provenance · inv.hidden_file · CWE-1104
website/static/.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/cli/take-control-limits.test.mjs:94
'.git-credentials', 'infra/prod.tfvars', 'infra/prod.tfvars.json', 'credentials.json', 'gcp-credentials-dev.json',
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/cli/take-control-limits.test.mjs:95
'secrets.toml', '.htpasswd', 'keys/putty.ppk', 'kubeconfig', '.kube/config', '.dockercfg', '.pgpass', '.netrc',
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/commands/core.ts:97
return fs.readFile(path.resolve(binDir, '../../llm.txt'), 'utf8');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/core/benchmark/run.ts:2
import { loadForAgentWithContext } from '../../commands/read.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/core/ingest/extractors/docs.ts:2
import { isConvertibleDocument } from '../../integrations/markdown-them.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/core/ingest/extractors/host-memory.ts:2
import { parseFrontmatter } from '../../memory/frontmatter.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/core/integrations/agent-hook-runtime.ts:3
import { loadForAgentWithContext } from '../../commands/read.js';

Gates applied: no_behavioural_pass.

Audited 2026-10-13 · audit v0.4.1 · source sha fa5c66aa979dfull audit observations/trust-audit/mcp-server/the-long-ride__engram.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-13fa5c66aa979dBLOCKF43first audit
06

Questions

What is the engram MCP server?

Engram - file-system-based memory management system for AI agents that grows with you & your teams, across agents, projects, and devices.

What tools does engram expose?

12 in total: 8 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is engram safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (43/100) and found 8 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does engram need?

It reads GIT_CONFIG_KEY_0 and GIT_CONFIG_KEY_1 from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (fa5c66aa979d), read on 2026-10-13. The repository is watched and re-audited when it changes.

Advertisement