nicolaischmid/agent-inbox-tools · Archived

signal-history-search

Search Signal Desktop message history on macOS with sub-second query times. Queries the encrypted SQLite database directly without export overhead.

First seen Jan 25, 2026

Installation

$ npx skills add nicolaischmid/agent-inbox-tools --skill signal-history-search

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from nicolaischmid/agent-inbox-tools.

npx skills add nicolaischmid/agent-inbox-tools

Browse all from nicolaischmid/agent-inbox-tools

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2
License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
LicenseMIT
More metadata
author
Nicolai Schmid
version
1.0.0
requires
["macOS","Signal Desktop (logged in)","nix-shell"]

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,376 B
  • docs README.md 655 B
  • docs SUMMARY.md 176 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 6 installs

SKILL.md

Signal History Search

Direct SQL search against Signal Desktop's encrypted database. Queries complete in under 1 second against live data.

When to use

  • You need to quote or summarize prior Signal conversations.
  • You already have Signal Desktop installed on macOS.
  • You want fast, instant search without export delays.

How it works

  1. Retrieves the encryption key from macOS Keychain (Signal Safe Storage)
  2. Decrypts the key using PBKDF2 (same as Signal Desktop)
  3. Opens the SQLite database directly with SQLCipher
  4. Runs SQL queries against messages and conversations tables
  5. No files are written; searches happen in memory

First run caches the Python environment path (~5-10s setup), subsequent runs are sub-second.

Usage

# List all available chats
signal-search list

# Dump all messages from a specific day
signal-search dump --date "2026-01-25"

# Dump a specific day's chat with one person
signal-search dump --date "2026-01-25" --chat "Dariush"

# Search within a specific chat
signal-search search --query "istanbul" --chat "Monika"

# Search with context (messages before/after matches)
signal-search search --query "flight" --chat "Monika" --context 3

# Regex search across all chats
signal-search search --query "invoice.*\d{4}"

# Literal string search (not regex)
signal-search search --query "100$" --literal

# Case-sensitive search
signal-search search --query "API" --case-sensitive

# Limit number of results
signal-search search --query "meeting" --max-count 10

Commands

Command Description
list List all available chats (name and type)
dump Dump all messages from a specific day
search Search messages

Dump Flags

Flag Short Description
--date <YYYY-MM-DD> -d Date to dump (required)
--chat <name> -c Filter to chats containing this string

Search Flags

Flag Short Description
--query <pattern> -q Search pattern (regex by default)
--chat <name> -c Filter to chats containing this string
--context <n> -C Show N messages before and after matches
--max-count <n> -m Stop after N matches
--case-sensitive -s Case-sensitive search (default: smart-case)
--literal -F Treat query as literal string, not regex

Output Format

> [2026-01-15 12:01:11] Monika Schmid | Monika Schmid: Habe Fluge gebucht!
  [2026-01-15 12:40:53] Monika Schmid | Me: Schon!
  • Lines starting with > are matches
  • Format: [timestamp] Chat Name | Sender: Message
  • Context lines (if requested) don't have the > prefix

Performance

Operation Time
First run (env setup) ~5-10s
Subsequent searches <0.5s
Full chat search (1000s of messages) <1s

Security considerations

  • The database key is retrieved from macOS Keychain using security find-generic-password
  • No data is written to disk; all searches happen in memory
  • The cached Python path is stored in ~/.cache/signal-search/
  • Searches happen locally; nothing leaves your machine

Legacy: Export-based search

The old export-based script (signal-history-search) is still available but deprecated. It uses sigexport to create a temporary export, then searches with ripgrep. This is slower (~15-30s) but may be useful if the direct DB access fails.

# Old method (slower, requires full export)
signal-history-search search --chat "Name" --query "pattern"

Troubleshooting

  • "Failed to get keychain password": Ensure Signal Desktop has been opened at least once and you've granted keychain access
  • "Signal Desktop not found": Check that ~/Library/Application Support/Signal exists
  • First run slow: This is normal; nix-shell is setting up the Python environment with SQLCipher bindings
  • "nix-shell: command not found": Install Nix package manager