ContextKeeper

ReviewAudited by ClawScan on May 10, 2026.

Overview

ContextKeeper is a local checkpointing helper, but its scripts contradict some safety claims and contain unvalidated local state/path handling that could write outside the intended folder or run injected Python from a poisoned checkpoint file.

Install only if you are comfortable with a local shell-based checkpoint tool that writes persistent project metadata under ~/.memory/contextkeeper. Before using it, the maintainer should add project-ID path validation, safely parse checkpoint timestamps, and update the metadata/security claims to match the actual script dependencies and command execution.

Findings (5)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A mistaken or malicious project override could make the helper write files in unintended locations under the user's home directory.

Why it was flagged

The optional project ID argument is used directly in a filesystem path without validation. A value containing path traversal such as ../ can cause the script to create directories and write latest.json outside the intended ContextKeeper projects directory.

Skill content
PROJECT_OVERRIDE="${2:-}" ... PROJECT_ID="$PROJECT_OVERRIDE" ... mkdir -p "$PROJECTS_DIR/$PROJECT_ID" ... cat > "$PROJECTS_DIR/$PROJECT_ID/latest.json"
Recommendation

Validate project IDs with a strict allowlist such as P followed by digits or alphanumeric/underscore/hyphen only, reject slashes and dot-dot segments, and verify the resolved path remains under $HOME/.memory/contextkeeper/projects.

ConcernMedium Confidence
ASI05: Unexpected Code Execution
What this means

If local checkpoint state is tampered with or generated unsafely, opening the dashboard could run commands with the user's privileges.

Why it was flagged

A timestamp read from a persistent checkpoint file is inserted directly into a Python command string. If the checkpoint file is poisoned with a single quote and Python statements, dashboard.sh could execute unintended Python code.

Skill content
TIMESTAMP=$(grep '"timestamp"' "$CURRENT" ...)
REL_TIME=$(python3 -c "
from datetime import datetime
try:
    ts = '${TIMESTAMP}'.replace('Z', '+00:00')
Recommendation

Do not interpolate file content into python3 -c. Pass the timestamp via an environment variable or argv, validate it as an ISO timestamp before use, or compute relative time purely in shell with safe parsing.

What this means

Project names, paths, branch names, recent commit summaries, and touched file names may remain on disk and influence later dashboard/context behavior.

Why it was flagged

The skill persistently stores project state and git-derived metadata in local memory files for reuse across sessions. This is aligned with the stated purpose, but users should understand what is retained.

Skill content
CKPT_DIR="$HOME/.memory/contextkeeper" ... "git_branch": "$SAFE_BRANCH", "recent_commits": "$SAFE_RECENT_COMMITS", "files_touched": [$FILES_JSON] ... "git_dir": "$GIT_DIR"
Recommendation

Document retention and cleanup clearly, avoid storing more project metadata than needed, and treat checkpoint files as untrusted input when reading them later.

What this means

Users may believe the skill has stronger input validation and less command execution than the included scripts actually provide.

Why it was flagged

The safety description overstates the implementation: included shell scripts do execute local commands, and ckpt.sh uses the project override in paths without validation while dashboard.sh interpolates checkpoint data into Python.

Skill content
Manual checkpoint creation with validated inputs. No background processes, no PID manipulation, no command execution. ... | Injection attacks | Input validated and escaped |
Recommendation

Revise the claims to accurately describe local command use, specify exactly which inputs are validated, and fix the validation/escaping gaps before advertising the skill as safe from injection.

What this means

The skill may fail or behave differently on systems that do not have these tools, despite metadata suggesting no binary requirements.

Why it was flagged

The registry-style metadata declares no required binaries, while the user-facing requirements and scripts depend on bash and git, with dashboard.sh optionally using python3.

Skill content
requires:
  bins: []
install: [] ... ## Requirements
- bash
- git (for project detection)
Recommendation

Declare bash and git in the skill metadata, mention optional python3 use, or remove the dependency from the script.