Kakaotalk

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill matches a KakaoTalk AI bot, but Relay mode can let an unverified public webhook drive a local worker that reads memory, calls Gemini, and replies through request-supplied URLs.

Basic mode is comparatively straightforward. Use Relay mode only if you are comfortable exposing a bot webhook, running a local worker, and sending selected local memory to Gemini. Before installing, use a dedicated Supabase project or scoped backend, enable Kakao request verification, validate callback URLs, keep MEMORY.md free of secrets, and do not run the launchd/ngrok scripts unless you want a persistent or publicly reachable local service.

Findings (4)

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

Someone who can reach the deployed webhook could submit fake Kakao-shaped requests, consume API/LLM resources, and cause the local relay to send generated answers to an attacker-chosen callback URL.

Why it was flagged

In Relay mode, the public Vercel handler queues a request-supplied utterance and callback URL. The provided file shows no Kakao signature verification, origin check, rate limit, or callback allow-list before trusting that work item.

Skill content
callback_url = user_request.get("callbackUrl", "") ... if _save_to_queue(user_id, utterance, callback_url): self._send_json({"version": "2.0", "useCallback": True})
Recommendation

Require Kakao signature or shared-secret verification at the Vercel endpoint, validate callback URL hosts, rate-limit requests, and reject unauthenticated Relay jobs before the local watcher processes them.

What this means

Private notes or secrets in MEMORY.md may be sent to Gemini and could be reflected into Kakao callback responses, especially if a malicious or mistaken prompt asks the bot to reveal its memory.

Why it was flagged

The local watcher reads persistent OpenClaw memory and includes it in a Gemini request for queued messages. The artifacts do not show redaction, per-message consent, or prompt-injection safeguards for that memory.

Skill content
memory_path = os.path.expanduser("~/.openclaw/workspace/MEMORY.md") ... memory_context = f.read()[:2000] ... return _call_gemini_direct(system_prompt, utterance)
Recommendation

Make memory sharing explicitly opt-in, show the exact file being read, redact secrets, isolate memory as untrusted context, and avoid sending local memory to external providers unless the user approves.

What this means

If the key is leaked or abused through the relay, it may allow broader Supabase database access than this single queue workflow needs.

Why it was flagged

Relay mode asks for a Supabase Service Role Key, which is typically broad project-level authority, but the artifacts do not bound it to only the kakaotalk_queue table or provide least-privilege guidance.

Skill content
SUPABASE_SERVICE_KEY (optional) - [Relay 모드] Supabase Service Role Key
Recommendation

Use a dedicated Supabase project or least-privilege backend/RPC for this skill, restrict table access with RLS where possible, keep service-role keys only on trusted servers, and rotate keys after testing.

What this means

The local Kakao webhook server may continue running after setup and across logins, which can be useful but also increases exposure if paired with ngrok or missing webhook authentication.

Why it was flagged

If the user manually runs this script, it installs a launchd service that starts the local server at login and keeps it available.

Skill content
PLIST_PATH="$HOME/Library/LaunchAgents/${LABEL}.plist" ... <key>KeepAlive</key> ... <key>RunAtLoad</key><true/> ... launchctl load -w "$PLIST_PATH"
Recommendation

Run the service installer only if you want persistent background operation, keep the unload command handy, and avoid exposing the server publicly without signature verification.