Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Penfield

v2.0.0

Persistent memory for OpenClaw agents. Store decisions, preferences, and context that survive across sessions. Build knowledge graphs that compound over time...

5· 2.6k·7 current·7 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name, description, and the SKILL.md tools (store/recall/connect/etc.) align: a plugin is expected to provide persistent memory and graph features. Requiring the OpenClaw plugin config flag is coherent.
Instruction Scope
SKILL.md focuses on what to store and how to use memory tools; it does not instruct the agent to read unrelated system files or extra env vars. However the runtime document does not disclose where memories/artifacts are persisted, who can access them, retention/ deletion behavior, or network endpoints used—important scope gaps for a persistence feature.
Install Mechanism
Install spec is an npm package (openclaw-penfield) which is a plausible delivery method for an OpenClaw plugin. But there is no homepage or source repository listed, so you cannot review the package before installing; npm packages from unknown/opaque authors are a moderate supply-chain risk.
Credentials
The skill requests no environment variables or credentials, which is plausible if storage is managed by the platform. However, persistent storage typically involves a backend (local disk, database, or cloud) and the absence of any declared storage credentials or description of where data goes is a transparency concern.
Persistence & Privilege
always is false and the skill is user-invocable; autonomous invocation is allowed but is the platform default. The plugin requests the normal plugin config path only. No indication it modifies other skills or system-wide settings.
What to consider before installing
This skill looks functionally coherent but lacks transparency about where and how it stores user data and the npm package has no listed homepage/source to inspect. Before installing: (1) verify the openclaw-penfield npm package and author on the registry and read its source code or repository; (2) confirm the storage backend (local vs cloud), retention policy, encryption at rest/in transit, and which accounts can access memories; (3) test the package in an isolated environment (non-production) and monitor network activity to discover external endpoints; (4) prefer installing only if you can audit the package or the vendor provides clear data-handling documentation. If you cannot verify these, treat the package as higher-risk and avoid installing it in sensitive environments.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🧠 Clawdis
Configplugins.entries.openclaw-penfield.enabled

Install

Install Penfield pluginnpm i -g openclaw-penfield
latestvk970m711khzqfecqtwdv5adc7182zgdf
2.6kdownloads
5stars
5versions
Updated 10h ago
v2.0.0
MIT-0

Penfield Memory

Persistent memory that compounds. Your agent remembers conversations, learns preferences, connects ideas, and picks up exactly where it left off—across sessions, days, and channels.

Tools

Memory

ToolPurposeWhen to use
penfield_storeSave a memoryUser shares preferences, you make a discovery, a decision is made, you learn something worth keeping
penfield_recallHybrid search (BM25 + vector + graph)Need context before responding, resuming a topic, looking up prior decisions
penfield_searchSemantic search (higher vector weight)Fuzzy concept search when you don't have exact terms
penfield_fetchGet memory by IDFollowing up on a specific memory from recall results
penfield_update_memoryEdit existing memoryCorrecting, adding detail, changing importance or tags

Knowledge Graph

ToolPurposeWhen to use
penfield_connectLink two memoriesNew info relates to existing knowledge, building understanding over time
penfield_disconnectRemove link between memoriesRelationship was created in error or is no longer valid
penfield_exploreTraverse graph from a memoryUnderstanding how ideas connect, finding related context

Context & Analysis

ToolPurposeWhen to use
penfield_save_contextCheckpoint a sessionEnding substantive work, preparing for handoff to another agent
penfield_restore_contextResume from checkpointPicking up where you or another agent left off
penfield_list_contextsList saved checkpointsFinding previous sessions to resume
penfield_reflectAnalyze memory patternsSession start orientation, finding themes, spotting gaps

Artifacts

ToolPurposeWhen to use
penfield_save_artifactStore a fileSaving diagrams, notes, code, reference docs
penfield_retrieve_artifactGet a fileLoading previously saved work
penfield_list_artifactsList stored filesBrowsing saved artifacts
penfield_delete_artifactRemove a fileCleaning up outdated artifacts

Personality

ToolPurposeWhen to use
penfield_awakenLoad personality configSession start, identity refresh

Writing Memories That Actually Work

Memory content quality determines whether Penfield is useful or useless. The difference is specificity and context.

Bad — vague, no context, unfindable later:

"User likes Python"

Good — specific, contextual, findable:

"[Preferences] User prefers Python over JavaScript for backend work.
Reason: frustrated by JS callback patterns and lack of type safety.
Values type hints and explicit error handling. Uses FastAPI for APIs."

What makes a memory findable:

  1. Context prefix in brackets: [Preferences], [Project: API Redesign], [Investigation: Payment Bug], [Decision]
  2. The "why" behind the "what" — rationale matters more than the fact itself
  3. Specific details — names, numbers, dates, versions, not vague summaries
  4. References to related memories — "This builds on [earlier finding about X]" or "Contradicts previous assumption that Y"

Memory Types

Use the correct type. The system uses these for filtering and analysis.

TypeUse forExample
factVerified, durable information"User's company runs Kubernetes on AWS EKS"
insightPatterns or realizations"Deployment failures correlate with Friday releases"
correctionFixing prior understanding"CORRECTION: The timeout isn't Redis — it's a hardcoded batch limit"
conversationSession summaries, notable exchanges"Discussed migration strategy. User leaning toward incremental approach"
referenceSource material, citations"RFC 8628 defines Device Code Flow for OAuth on input-constrained devices"
taskWork items, action items"TODO: Benchmark recall latency after index rebuild"
strategyApproaches, methods, plans"For user's codebase: always check types.ts first, it's the source of truth"
checkpointMilestone states"Project at 80% — auth complete, UI remaining"
identity_coreImmutable identity factsSet via personality config, rarely stored manually
personality_traitBehavioral patternsSet via personality config, rarely stored manually
relationshipEntity connections"User works with Chad Schultz on cybersecurity content"

Importance Scores

Use the full range. Not everything is 0.5.

ScoreMeaningExample
0.9–1.0Critical — never forgetArchitecture decisions, hard-won corrections, core preferences
0.7–0.8Important — reference oftenProject context, key facts about user's work
0.5–0.6Normal — useful contextGeneral preferences, session summaries
0.3–0.4Minor — background detailTangential facts, low-stakes observations
0.1–0.2Trivial — probably don't storeIf you're questioning whether to store it, don't

Connecting Memories

Connections are what make Penfield powerful. An isolated memory is just a note. A connected memory is understanding.

After storing a memory, always ask: What does this relate to? Then connect it.

Relationship Types (24)

Knowledge Evolution: supersedes · updates · evolution_of Use when understanding changes. "We thought X, now we know Y."

Evidence: supports · contradicts · disputes Use when new information validates or challenges existing beliefs.

Hierarchy: parent_of · child_of · sibling_of · composed_of · part_of Use for structural relationships. Topics containing subtopics, systems containing components.

Causation: causes · influenced_by · prerequisite_for Use for cause-and-effect chains and dependencies.

Implementation: implements · documents · tests · example_of Use when something demonstrates, describes, or validates something else.

Conversation: responds_to · references · inspired_by Use for attribution and dialogue threads.

Sequence: follows · precedes Use for ordered steps in a process or timeline.

Dependencies: depends_on Use when one thing requires another.

Recall Strategy

Good queries find things. Bad queries return noise.

Tune search weights for your query type:

Query typebm25_weightvector_weightgraph_weight
Exact term lookup ("Twilio auth token")0.60.30.1
Concept search ("how we handle errors")0.20.60.2
Connected knowledge ("everything about payments")0.20.30.5
Default (balanced)0.40.40.2

Filter aggressively:

  • memory_types: ["correction", "insight"] to find discoveries and corrections
  • importance_threshold: 0.7 to skip noise
  • enable_graph_expansion: true to follow connections (default, usually leave on)

Workflows

User shares a preference

penfield_store({
  content: "[Preferences] User wants responses under 3 paragraphs unless complexity demands more. Dislikes bullet points in casual conversation.",
  memory_type: "fact",
  importance: 0.8,
  tags: ["preferences", "communication"]
})

Investigation tracking

// Start
penfield_store({
  content: "[Investigation: Deployment Failures] Reports of 500 errors after every Friday deploy. Checking release pipeline, config drift, and traffic patterns.",
  memory_type: "task",
  importance: 0.7,
  tags: ["investigation", "deployment"]
})

// Discovery — connect to the investigation
discovery = penfield_store({
  content: "[Investigation: Deployment Failures] INSIGHT: Friday deploys coincide with weekly batch job at 17:00 UTC. Both compete for DB connection pool. Not a deploy issue — it's resource contention.",
  memory_type: "insight",
  importance: 0.9,
  tags: ["investigation", "deployment", "root-cause"]
})
penfield_connect({
  from_memory_id: discovery.id,
  to_memory_id: initial_report.id,
  relationship_type: "responds_to"
})

// Correction — supersede wrong assumption
correction = penfield_store({
  content: "[Investigation: Deployment Failures] CORRECTION: Not a CI/CD problem. Friday batch job + deploy = connection pool exhaustion. Fix: stagger batch job to 03:00 UTC.",
  memory_type: "correction",
  importance: 0.9,
  tags: ["investigation", "deployment", "correction"]
})
penfield_connect({
  from_memory_id: correction.id,
  to_memory_id: initial_report.id,
  relationship_type: "supersedes"
})

Session handoff

penfield_save_context({
  name: "deployment-investigation-2026-02",
  description: "Investigated deployment timeout issues. memory_id: " + discovery.id,
  memory_ids: [discovery.id, correction.id, initial_report.id]
})

Next session or different agent:

penfield_restore_context({
  name: "deployment-investigation-2026-02"
})

What NOT to Store

  • Verbatim conversation transcripts (too verbose, low signal)
  • Easily googled facts (use web search instead)
  • Ephemeral task state (use working memory)
  • Anything the user hasn't consented to store about themselves
  • Every minor exchange (be selective — quality over quantity)

Tags

Keep them short, consistent, lowercase. 2–5 per memory.

Good: preferences, architecture, investigation, correction, project-name Bad: 2026-02-02, important-memory-about-deployment, UserPreferencesForCommunicationStyle

Also Available Outside OpenClaw

The native OpenClaw plugin is the fastest path, but Penfield works with any AI tool anywhere:

Claude Connectors

Name: Penfield
Remote MCP server URL: https://mcp.penfield.app

Claude Code

Claude mcp add --transport http --scope user penfield https://mcp.penfield.app

MCP Server — for Gemini CLI, Cursor, Windsurf, Intent, Perplexity Desktop or any MCP-compatible tool:

{
  "mcpServers": {
    "penfield": {
      "command": "npx",
      "args": [
        "mcp-remote@latest",
        "https://mcp.penfield.app/"
      ]
    }
  }
}

API — direct HTTP access at api.penfield.app for custom integrations.

Same memory, same knowledge graph, same account. The plugin is 4-5x faster (no MCP proxy layer), but everything stays in sync regardless of how you connect.

Links

Comments

Loading comments...