usewhisper-autohook
Analysis
This skill is not clearly malicious, but it should be reviewed carefully because it can automatically send, store, and later reinject full conversation turns through an external memory service.
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
Before you think or respond to any message: ... Call get_whisper_context ... After you generate your final response: ... Call ingest_whisper_turn ... Always do this. Never skip.
The suggested system instruction forces automatic tool use before and after every response, with no built-in per-message opt-out or sensitivity check.
Required binaries (all must exist): none ... Required env vars: none
The registry metadata under-declares setup requirements that SKILL.md lists, including Node and Whisper environment variables.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
WHISPER_CONTEXT_API_KEY=YOUR_KEY ... export OPENAI_API_KEY="YOUR_UPSTREAM_KEY" ... export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_KEY"
The skill requires a Whisper API key and, when proxy mode is used, upstream model-provider API keys.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
ingest_whisper_turn(user_id, session_id, user_msg, assistant_msg) ... user_msg = the full user message ... assistant_msg = your full final reply
The skill stores full conversation turns in long-term memory and later prepends retrieved memory into future prompts.
const user_id = headerUserId || inferred.user_id || String(bodyRaw?.user || "anon"); const session_id = headerSessionId || inferred.session_id || "default";
The proxy relies on caller-supplied or inferred identifiers and falls back to shared anon/default IDs when missing.
