Back to skill

Security audit

Quick Context Saver

Security checks for vulnerabilities and agentic risk

Overview

The skill is a local memory manager, but it asks users to install and run an unreviewed global npm package while making overly broad local-only and zero-dependency privacy claims.

Install only if you are comfortable trusting the external `quick-context-saver` npm package and its future updates. Avoid storing real secrets unless you verify encryption behavior, pin or review the dependency, keep tokens out of the install environment, and enable Gist sync only for data you are willing to upload to GitHub.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:100
Finding

Unpinned Global npm Dependency Executes Unaudited Code

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 97–101; dependency repeated at line 722
Vulnerability Type: Supply-chain risk from an unpinned, globally installed dependency
Risk Level: Medium

Vulnerable Code

bash
# Install and initialize
npm install -g quick-context-saver
cd your-project
memory-init

The dependency table repeats the unsafe installation requirement:

markdown
| quick-context-saver | npm package | Required | `npm install -g quick-context-saver` |

Technical Analysis

The Skill directs users or Agents with execution capability to install quick-context-saver globally from the npm registry without specifying an exact version, integrity hash, lockfile, or verified source. The implementation of this package is not included in the audited project, which contains only SKILL.md; consequently, its installation scripts and memory-* executables could not be reviewed.

An unpinned package reference is mutable. A compromised maintainer account, malicious future release, registry compromise, or package-name takeover could cause the same installation command to retrieve attacker-controlled code. npm packages can execute lifecycle scripts during installation, and global installation makes package executables available outside the current project.

This finding does not establish that the current npm package is malicious. It establishes that the Skill trusts and executes an unaudited, mutable external dependency without adequate supply-chain controls.

Attack Path

  1. An attacker compromises the package publisher, package registry entry, or another component of the package's release process.
  2. The attacker publishes a malicious version under the expected quick-context-saver package name.
  3. A user or Agent follows the Skill instructions and runs:
    bash
    npm install -g quick-context-saver
    
  4. npm downloads the latest mutable package version and may execute attacker-controlled lifecycle script ...[truncated 1094 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to an exact reviewed version rather than resolving the latest release:
    bash
    npm install --save-exact quick-context-saver@X.Y.Z
    
  2. Install the package locally within the project instead of globally, and invoke it through a locked project command such as npx --no-install.
  3. Commit a lockfile containing resolved versions and integrity metadata.
  4. Verify the package provenance, publisher identity, repository, release signatures, and npm provenance attestations before installation.
  5. Include the package implementation in the audited artifact or provide a verifiable source reference so its lifecycle scripts and executable commands can be reviewed.
  6. Disable npm lifecycle scripts during installation when they are unnecessary:
    bash
    npm ci --ignore-scripts
    
  7. Run the dependency under a restricted user or sandbox with access only to the memory directory required for the declared functionality.
  8. Do not expose GITHUB_TOKEN, MEMORY_ENCRYPTION_KEY, or unrelated credentials to installation processes. Provide secrets only to the specific runtime operation that requires them.
  9. Document the expected package checksum and establish a controlled update process requiring security review before changing versions.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest advertises the skill as 'zero dependency' and '100% local storage', but the same document exposes optional remote behaviors such as callback URLs and GitHub Gist sync. This is a real security-relevant integrity issue because users may trust the locality/privacy claims and provide sensitive data under false assumptions, leading to unintended third-party transmission.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The body text repeats 'zero external dependencies, zero API key, 100% local storage' while later sections require GitHub Gist API usage and GITHUB_TOKEN for synchronization. This inconsistency can materially mislead users about privacy boundaries and operational dependencies, especially in a skill designed to retain potentially sensitive memory content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill documents automatic archival and cleanup of memories, including deletion of archived data after retention windows, without strong up-front warnings about destructive data modification. In a memory-management skill, silent or insufficiently disclosed lifecycle actions are security-relevant because they can cause loss of sensitive or business-critical records and weaken auditability.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The GitHub Gist synchronization feature can transmit locally stored memory content to a third-party service, yet the document does not present this as a prominent privacy/security warning. Because the skill is positioned as privacy-preserving local memory, the lack of conspicuous disclosure increases the risk that users sync sensitive data without informed consent.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill encourages retention, export, audit reporting, backup, and cross-device synchronization of user memory content and metadata such as confidence/source. In a system explicitly designed to store potentially sensitive contextual memory, these broad data-handling operations increase the chance of accidental disclosure, over-collection, and propagation of sensitive information across files and services.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documented error cause is missing required input parameters, but the remediation tells users to run a ping/network connectivity check and inspect firewall or proxy settings. That advice does not match the stated problem and is inconsistent with the skill's local-memory positioning.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language description explicitly says the skill was completely localized for Chinese users and workflows. There is no accompanying statement that other languages are supported or that the user may choose their preferred language, so this can conflict with language/locale choice expectations.

Content

No source excerpt is available for this finding.