SQ Memory

ReviewAudited by ClawScan on May 10, 2026.

Overview

The skill is a disclosed persistent-memory connector, but it needs review because it can store and share sensitive memories, lists more memory than requested, and puts stored text into request URLs.

Install only if you are comfortable giving the agent persistent memory. Prefer a local or HTTPS SQ endpoint, avoid storing passwords or highly sensitive conversation details, use distinct namespaces, review/delete memories regularly, and consider patching list_memories and the GET-based write path before relying on it for private data.

Findings (6)

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.

NoteHigh Confidence
ASI01: Agent Goal Hijack
What this means

The agent may store user details and rely on stored memory without a fresh prompt each time.

Why it was flagged

The skill asks the user to add behavior-changing instructions that make memory use automatic. This is expected for a memory skill, but it affects the agent's priorities.

Skill content
Add to your agent's system prompt: ... When users mention preferences, remember them. When answering questions, check memory first.
Recommendation

Add these instructions only after tailoring them with rules for consent, sensitive data, and when memory should not be trusted.

What this means

An agent trying to list one category of memory may see unrelated memory coordinates and may then act on or retrieve entries outside the user's intended scope.

Why it was flagged

The prefix is computed but not used in the API request or returned-data filtering, so the tool can return all table-of-contents entries for the configured phext/namespace instead of only the requested prefix.

Skill content
async list_memories(prefix) { ... const response = await this._request('GET', `/api/v2/toc?p=${encodeURIComponent(this.phext)}`); ... return lines; }
Recommendation

Patch list_memories to pass or enforce the prefix, or document it as a full-memory listing and require user confirmation before broad enumeration.

What this means

If memories contain private conversation history, preferences, or secrets, those values can appear in URLs and may be captured by endpoint, proxy, or access logs.

Why it was flagged

The text being stored is placed directly into a GET query string when writing memory to the SQ endpoint.

Skill content
const s = encodeURIComponent(text); await this._request('GET', `/api/v2/update?p=${encodeURIComponent(this.phext)}&c=${encoded}&s=${s}`);
Recommendation

Use a POST request body over HTTPS for memory writes, and avoid storing secrets or highly sensitive data until this handling is corrected.

What this means

Anyone with the API key may be able to access or modify the associated SQ memory store, depending on the provider's controls.

Why it was flagged

The skill supports an optional SQ Cloud API key and correctly marks it as secret in the skill manifest.

Skill content
"api_key": { "description": "SQ Cloud API key (leave empty for self-hosted)", "required": false, "secret": true }
Recommendation

Use HTTPS, keep the key out of logs, rotate it if exposed, and prefer the least-privileged or self-hosted configuration when possible.

What this means

Old, incorrect, or sensitive memories can influence future sessions, and private information may remain available until explicitly deleted.

Why it was flagged

The skill intentionally creates long-lived agent memory and encourages storing conversation history for reuse after context is cleared.

Skill content
Text persists forever (or until you delete it) ... Store conversation history beyond context limits
Recommendation

Define what may be remembered, avoid secrets, periodically review/delete memories, and treat recalled content as context to verify rather than unquestioned truth.

What this means

Agents sharing a namespace could mistake another writer's data for trusted tasks or messages.

Why it was flagged

The multi-agent example stores messages and tasks in shared memory using caller-provided agent names, without showing identity verification or message provenance checks.

Skill content
async function sendMessage(fromAgent, toAgent, message) { ... await remember(coordinate, JSON.stringify({ from: fromAgent, to: toAgent, message: message, ... })) }
Recommendation

Use separate namespaces by default, add authentication or signatures for shared messages, and require agents to validate the origin and intent of shared memory before acting.