waiting-on-you
One list of the questions your Hermes bots are waiting on you to answer.
When several bots are running (Bot Mode profiles, or a gateway with many chats), each one ends some of its replies with a question for you: "Should I merge PR 6528 now?", "Mau aku jalankan sekarang?", "Still waiting on you: whitelist X, yes or no?". Those questions end up spread across a dozen chats. Some get buried under newer messages, and work stops until you happen to scroll back.
waiting-on-you reads every profile's session store read-only and gives you one list:
$ hermes waiting
4 waiting on you, from 4 bot(s), oldest first:
[a1b2c3d4] 1d ops-bot (+security-bot)
Should I merge PR 6528 now, or hold it until the evening window?
[e5f6a7b8] 1d security-bot
Still waiting on you: whitelist api.example.io in SEC-018, yes or no?
[c9d0e1f2] 12h data-bot
Let me know if I can run it with --maximum_bytes_billed=50000000000.
[3a4b5c6d] 5h research-bot
Keputusanmu: tambahkan B ke watchlist dengan trigger 'weights released'?
Answer in that bot's chat, or `/waiting dismiss <id>`.
What it does
- Covers every bot. It scans
state.dbof the root profile and of every profile underprofiles/. In Hermes these are opened withmode=roandPRAGMA query_only. - Finds real asks only. It looks only at the final reply of a turn that you started, and only at the last few prose lines. Questions in the middle of a report,
?inside URLs, code blocks, and replies to other bots, cron runs or tool notifications are skipped. Subagent sessions are skipped too. - Understands English and Indonesian. Besides
?, it recognises phrases such as should I, do you want, let me know, waiting on you, your call, mau aku, boleh saya, nunggu keputusanmu, menunggu persetujuan, tinggal kamu bilang. - Merges duplicates across bots. When two bots ask about the same thing, the list shows one item with both names. Two asks count as the same thing when they share an identifier (PR 6528, SEC-018, AB#123, kanban
t_…) or when at least 60% of their words overlap. - Clears answered asks. An item stays open until you send a real message in that chat, or until the same bot asks a newer question there.
- Shows age. The list is ordered oldest first, so the item that has blocked work longest comes first.
Use
| In a session | In a terminal | |
|---|---|---|
| /waiting | hermes waiting | open asks, last 14 days |
| /waiting all | hermes waiting --all | include the ones you answered |
| /waiting days 3 | hermes waiting --days 3 | change the window |
| /waiting json | hermes waiting --json | for scripts |
| /waiting dismiss <id> | hermes waiting --dismiss <id> | hide one you handled elsewhere |
Install:
hermes plugins install irsan-dimyati/hermes-waiting-on-you
hermes plugins enable waiting-on-you
Who sees what
Hermes keeps profiles separate on purpose, so the plugin limits what each surface shows:
| Where you run it | What it lists |
|---|---|
| hermes waiting in a terminal, or /waiting in the CLI, TUI or Desktop | Every profile on this machine. These surfaces are reachable only by the machine's owner. |
| /waiting in a messaging chat (Telegram, Discord, Slack, …, or any platform it doesn't recognise) | Only the profile that chat belongs to. In a group chat or on a shared bot, nobody admitted to it can see what another profile's bot asked its owner. |
To list every profile in messaging chats as well, the owner turns on all_profiles_in_chat. It is off by default; set it in the Desktop Plugins tab or with hermes config set plugins.entries.waiting-on-you.settings.all_profiles_in_chat true.
Disclosure
- Reads outside its own data. The plugin reads, in read-only mode,
state.db(sessions and messages) of every Hermes profile on the machine for the terminal and local surfaces, and of the chat's own profile for messaging chats (see Who sees what). It shows the text of bot replies that end in a question, which may include content from those conversations. Turning onall_profiles_in_chatexposes every profile's asks to anyone in your messaging chats. - Writes only its own file. The one file it writes is
plugin-data/waiting-on-you/dismissed.json, in the active profile. - No network, no model calls, no shell commands, no background processes, no credentials. It registers no tools and no hooks, and nothing runs during chats.
- Heuristic. Detection is pattern based. It can miss an ask phrased without a question mark or a known phrase. It can also list a rhetorical question at the end of a reply. If you answer a bot somewhere else (another chat, or in person), use
dismiss.
Develop
python -m pytest -q # synthetic multi-bot home, no real data
python demo/make_home.py /tmp/demo-home && HERMES_HOME=/tmp/demo-home hermes waiting
hermes plugins validate . --install-deps
The tests build a throwaway Hermes home with four made-up bots (demo/make_home.py). They check extraction (English, Indonesian, false positives), resolution, cross-bot merging, the time window and dismissals. They check that every state.db is byte-identical before and after a scan. They also check that a messaging chat sees only its own profile unless the owner setting is on.
License
MIT
README from the reviewed commit ca1fb1a; it updates when the author re-pins.

irsan-dimyati