Omahub
← All plugins
S

Omaconv

by SLcode777

Resume any Claude Code conversation from a searchable palette, in its original working directory.

Security review

Potentially dangerous behavior detected · 2 findings

Deterministic scan — not a security guarantee

High
Risk level
High
Analyzed commit
1cca7b8
Scanned
1 month ago

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
1cca7b8
Reviewed
1 month ago

The deterministic scan flagged a destructive `rm -rf /` in tests/search-model.test.js, but that is a false positive: it is a unit test verifying that the resume command properly quotes a cwd containing `rm -rf /`, not an actual destructive operation. The plugin's runtime code is well-engineered: it reads conversation transcripts, writes an index with 0600 permissions, and spawns all commands as argument arrays without shell interpolation, with no network access or telemetry. The only notable consideration is that it reads sensitive conversation data, but that is the plugin's explicit purpose and is clearly documented.

  • The deterministic scan's high-risk finding is a false positive from a test file; the actual code contains no destructive operations.
  • The plugin reads all Claude/Codex/OpenCode/Antigravity/Pi conversation transcripts, which may contain sensitive data; this is the intended functionality and is clearly disclosed in the README.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/SLcode777/omaconv --enable
Developer Tools #launcher #ai

Omaconv

Omaconv is a resume palette for Claude Code, Codex, OpenCode, Antigravity and Pi conversations, built for the Omarchy shell. It lists every conversation on the machine, finds them by searching their title, their directory and everything you actually typed in them, and resumes any of them in one keystroke — always in the right working directory.

Omaconv screenshot

Why

AI agents stores transcripts under ~/.agent/projects/<encoded-path>/. To resume a conversation you normally have to remember which directory it was started from, cd there, and scroll through the resume list. A conversation whose directory you forgot is not easy to find. Omaconv fixes that: one palette, fuzzy search over titles, paths and your own prompts, and a resume that always lands in the conversation's original cwd.

Install

omarchy plugin add https://github.com/SLcode777/omaconv.git --enable --yes

Then bind the toggle wherever you like (Hyprland keybinding, Kando entry, …):

omarchy-shell shell toggle slcode777.omaconv

Use

Open the palette and just type, the search line is the input.

With an empty input, the palette shows your pinned conversations, then the 10 most recent ones. A result matched through a search shows the matching excerpt with the term highlighted, so you always know why a row is there. The right pane previews the selected conversation as a readable YOU/AGENT dialogue.

typing an agent's name filters to it. Features an agent cannot support are greyed out instead of silently broken — Codex has no rename or fork; OpenCode forks fine but keeps all sessions in one shared database, so rename and delete dim rather than risk it; Antigravity resumes and previews only; Pi forks and deletes but has no rename. A resumed session keeps exactly the permission mode you left it with: Omaconv never injects permission-bypass flags.

Key Action
↵ Resume in the conversation's directory
Alt+↵ Resume as a fork — new session, same context, original intact
Ctrl+↵ Copy the cd … && <agent> --resume … command
Ctrl+P Pin / unpin
Ctrl+R Rename (shows in Claude Code's own picker too)
Ctrl+O Open a terminal in the conversation's directory
Ctrl+T Reveal the transcript in the file manager
Ctrl+G Search the full transcript, rendered as a readable dialogue
Ctrl+D Delete (to the trash)
Ctrl+K All shortcuts
Esc Clear the search, then close

Type / as the first character to switch to the CLAUDE skills namespace: it lists the skills installed in ~/.claude/skills/, searchable by name and description. ↵ opens the skill's SKILL.md, Ctrl+↵ copies /name.

Conversations whose directory no longer exists fall back to the most recent directory that still does (marked ↪), or are greyed out when none survives. Conversations currently running as a background agent show a ● live badge; resuming one opens claude agents so you can attach instead.

How it works

A small Python indexer (omaconv-index, stdlib only) scans the transcripts and writes a JSON index to ~/.local/state/omaconv/; the QML palette only ever reads that index. On open, the cached list shows instantly while an incremental reindex runs in the background — no daemon, no timers. Search is pure in-memory JavaScript: accent- and case-insensitive, literal matching over titles, paths and user prompts, ~0.5 ms per keystroke over a hundred conversations.

See more previews

Omaconv screenshot Omaconv screenshot Omaconv screenshot Omaconv screenshot Omaconv screenshot Omaconv screenshot

Privacy & security

  • No network access, ever. No LLM calls. No telemetry.
  • Reads only ~/.claude/. The cache (which contains conversation excerpts) is written with mode 0600 to ~/.local/state/omaconv/.
  • Two explicit, deliberate writes into ~/.claude/: rename appends a title line to the renamed transcript (append-only, the exact format Claude Code's own /rename writes — existing lines are never modified), and delete moves a transcript to the trash via gio trash (never rm, always recoverable).
  • Every command is spawned as an argument array — values read from transcripts are treated as data, never interpolated into a shell string.

Requirements

  • Omarchy with the Quickshell shell
  • python3 (standard library only)
  • claude on the PATH (and/or codex / opencode / agy / pi to resume their sessions)

Optional: ugrep (omarchy pkg add ugrep) upgrades Ctrl+G from a pager to an interactive search TUI.

Tests

python3 -m unittest discover -s tests   # indexer, renderer, edge cases
node tests/search-model.test.js         # search, sections, quoting

Update / uninstall

omarchy plugin update slcode777.omaconv
omarchy plugin remove slcode777.omaconv

License

MIT