Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Chat History Local

v1.0.0

Search past WhatsApp/chat conversations stored in the audit log PostgreSQL database. Use when the user asks about past conversations, what was discussed, wha...

0· 103·1 current·1 all-time
byNetanel Abergel@netanel-abergel

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for netanel-abergel/chat-history-local.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Chat History Local" (netanel-abergel/chat-history-local) from ClawHub.
Skill page: https://clawhub.ai/netanel-abergel/chat-history-local
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install chat-history-local

ClawHub CLI

Package manager switcher

npx clawhub@latest install chat-history-local
Security Scan
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The SKILL.md clearly describes searching a local PostgreSQL audit DB for WhatsApp/chat messages, which matches the skill name and description. However, the instructions require a specific psql binary path and PostgreSQL 18 (LC_ALL=C /opt/homebrew/.../psql), but the skill metadata declares no required binaries — that's an inconsistency between declared requirements and actual runtime expectations.
Instruction Scope
The instructions are narrowly scoped to constructing and running SQL queries against the local openclaw_audit.messages table, with templates for FTS, chat/date filters, and reply behavior. They do not instruct contacting external endpoints or reading unrelated system files. They do assume the agent will execute psql on the host and will run arbitrary SQL queries against the DB (which has sensitive chat content).
Install Mechanism
There is no install spec (instruction-only), so nothing new is written to disk. This is low-risk from an install perspective. The instruction to use a specific local psql binary is operational guidance, not an installer.
Credentials
The skill declares no environment variables or credentials, yet the SKILL.md hardcodes DB connection parameters (127.0.0.1:15432, user 'postgres', DB 'openclaw_audit') and expects password-less or local-auth PostgreSQL access. That implicit credential/access assumption should be explicit; reading the messages table gives access to sensitive personal conversations, so the privilege implied is significant even if no env vars are listed.
Persistence & Privilege
The skill does not request always: true and has no install step that persists on disk. It would be invoked at runtime and may run psql commands; autonomous invocation is allowed by default (not unusual) but combined with DB access this increases potential impact.
What to consider before installing
This skill queries a local PostgreSQL audit DB containing sensitive WhatsApp/chat messages. Before installing, confirm you actually want an agent that can run psql on your host and read message rows. Pay attention to these points: - The SKILL.md expects the Postgres 18 psql binary at a specific path but the skill metadata lists no required binaries; verify psql is available at that location or adjust the metadata. - The DB host/port/user are hardcoded (127.0.0.1:15432, user=postgres, db=openclaw_audit). Ensure that access to that DB is intended and that authentication (password/.pgpass/peer auth) is configured safely. - The agent will be able to run arbitrary SELECT queries you or the skill instructs; these will expose private conversations. Only enable the skill if you trust it and want the agent to access those messages. - If you are concerned about autonomous queries, disable autonomous invocation or restrict the skill's usage to interactive/manual runs; consider adding explicit required-binaries and credential metadata so the skill's footprint matches its runtime needs. - If you need higher assurance, ask the publisher for provenance (source/homepage) and for the skill to declare required binaries/credentials explicitly.

Like a lobster shell, security has layers — review code before you run it.

latestvk97692vtjaq4r90cbp1j926fq5843cg2
103downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

Chat History Search

Search and reference past conversations from the audit log database.

⚠️ Two Databases — Know the Difference

There are TWO PostgreSQL databases on port 15432:

DatabaseTablePurposeUse when
openclaw_auditmessagesWhatsApp/chat messages — who said what, when, in which chatSearching conversations, finding what someone said, quoting messages
openclaw_auditaudit_logLLM API costs — model usage, tokens, cost per callChecking spending, model usage stats, cost analysis

For message search: always use the messages table.

Database Connection

  • Host: 127.0.0.1, Port: 15432, User: postgres, DB: openclaw_audit
  • psql: LC_ALL=C /opt/homebrew/Cellar/postgresql@18/18.2/bin/psql -h 127.0.0.1 -p 15432 -U postgres -d openclaw_audit
  • Important: Must use PG 18 binary and LC_ALL=C prefix

Messages Table Schema

ColumnTypeDescription
idbigintAuto-increment PK
tstimestamptzMessage timestamp
message_idtextWhatsApp message ID (use for reply_to)
chat_idtextChat identifier (+972... for direct, ...@g.us for groups)
chat_typetextdirect / group / device / unknown
chat_nametextGroup name or chat label
sender_phonetextSender phone number
sender_nametextSender display name / 'assistant' for Nova
bodytextMessage text content
media_typetextimage/audio/etc or null
is_from_mebooleantrue = assistant's messages
session_keytextOpenClaw session UUID
tokens_inintegerInput tokens (assistant msgs only)
tokens_outintegerOutput tokens (assistant msgs only)
cost_usdnumericCost of response
modelvarchar(80)Model used

Indexes

  • Full-text search: idx_messages_body_fts (GIN on to_tsvector('simple', body))
  • By chat + time: idx_messages_chat (chat_id, ts)
  • By sender: idx_messages_sender (sender_phone)
  • By time: idx_messages_ts (ts)
  • Unique message_id: idx_messages_unique_id

How to Run Queries

LC_ALL=C /opt/homebrew/Cellar/postgresql@18/18.2/bin/psql -h 127.0.0.1 -p 15432 -U postgres -d openclaw_audit -c "QUERY"

Always add LIMIT. Start with 20, increase if needed.

Query Patterns

Full-text search (preferred for keyword searches)

SELECT id, ts, chat_name, sender_name, is_from_me, LEFT(body, 200), message_id
FROM messages
WHERE to_tsvector('simple', body) @@ plainto_tsquery('simple', 'search terms')
ORDER BY ts DESC LIMIT 20;

Search by chat

-- Roy's direct messages
SELECT id, ts, LEFT(body, 200) FROM messages 
WHERE chat_id = '+972542440470' AND chat_type = 'direct'
ORDER BY ts DESC LIMIT 20;

-- A specific group
SELECT id, ts, sender_name, LEFT(body, 200) FROM messages 
WHERE chat_id = '120363423630333430@g.us'
ORDER BY ts DESC LIMIT 20;

Search by date range

SELECT id, ts, chat_name, sender_name, is_from_me, LEFT(body, 200)
FROM messages WHERE ts BETWEEN '2026-02-20' AND '2026-02-21'
ORDER BY ts LIMIT 50;

ILIKE search (for phrases or partial matches)

SELECT id, ts, chat_name, sender_name, is_from_me, LEFT(body, 200)
FROM messages WHERE body ILIKE '%exact phrase%'
ORDER BY ts DESC LIMIT 20;

Get conversation context around a message

SELECT id, ts, chat_name, sender_name, is_from_me, LEFT(body, 300)
FROM messages WHERE id BETWEEN (TARGET_ID - 5) AND (TARGET_ID + 5)
ORDER BY ts;

List all chats

SELECT chat_id, chat_type, chat_name, COUNT(*) as msgs,
  MIN(ts) as first_msg, MAX(ts) as last_msg
FROM messages GROUP BY chat_id, chat_type, chat_name
ORDER BY msgs DESC;

Replying to Past Messages

When you find a message to reference, use message_id:

  • Include [[reply_to:<message_id>]] in your response for a native WhatsApp reply

Known Limitations

  • Messages before Feb 18, 2026 use old ingest format (chat_id from JSONL metadata)
  • Messages from Feb 18+ use ingest-v2 (chat_id from gateway.log correlation)
  • Sub-agent sessions show as unknown-* chat_id (no gateway log match)
  • NO_REPLY / HEARTBEAT_OK messages are filtered out during ingest

Tips

  • is_from_me = true → Nova sent it
  • is_from_me = false → a human sent it
  • For group chats, chat_name has the group name
  • sender_name = 'assistant' → Nova's outbound messages
  • Always respect child safety rules — never reveal info about Ben

Comments

Loading comments...