Bug Description
With the merged plugin approve hook (#58698), an approval coming from a rule shows a placeholder as the "command" on the desktop approval card, not the real command. The real command lives in the approval's description, but the card attached to the tool call never renders description. So you approve without seeing what runs.
Steps to Reproduce
- Add a
pre_tool_call plugin rule that returns {"action": "approve"} for a command-bearing tool (e.g. terminal).
- In the desktop app, ask something that runs a shell command, e.g. "what folder are you in?" (runs
pwd).
- On the approval card, expand "Command".
- It shows
<terminal> (plugin approval rule) instead of pwd.
Expected Behavior
The approval card shows the actual command (or the description, which contains it), so you can see what you're approving.
Actual Behavior
The "Command" toggle shows the synthetic label <terminal> (plugin approval rule). description (which holds run\npwd) isn't rendered on that card at all, so there's no way to see the command before approving.
Affected Component
- Tools (terminal, file ops, web, code execution, etc.)
- Other (desktop app approval UI)
Messaging Platform (if gateway-related)
N/A (CLI only)
Debug Report
Not attaching hermes debug share output: this is a deterministic UI bug reproducible from the steps above, and the shared logs carry prompt/message content and personal data that isn't needed here (see #22016). Environment dump instead:
version: 0.18.2 [5e849942] (2026-07-10)
os: Darwin 25.5.0 arm64
python: 3.11.15
openai_sdk: 2.24.0
profile: default
model: deepseek/deepseek-v4-flash
provider: nous
terminal: docker
api_keys: (all not set)
features: toolsets=hermes-cli, gateway running, cron_jobs 3, skills 1
config_overrides: terminal.backend=docker, compression.threshold=0.7, tts.provider=openai,
fallback_providers=[omlx/Qwen3.5-122B-A10B-4bit]
Operating System
macOS 26.5.2
Python Version
3.11.15 (hermes runtime)
Hermes Version
v0.18.2 (2026.7.7.2), upstream 5e84994, git install, up to date
Root Cause Analysis (optional)
Proposed Fix (optional)
Render description on the inline approval card too (and/or put the real command in command for command-bearing tools).
Are you willing to submit a PR for this?
Bug Description
With the merged plugin approve hook (#58698), an approval coming from a rule shows a placeholder as the "command" on the desktop approval card, not the real command. The real command lives in the approval's
description, but the card attached to the tool call never rendersdescription. So you approve without seeing what runs.Steps to Reproduce
pre_tool_callplugin rule that returns{"action": "approve"}for a command-bearing tool (e.g.terminal).pwd).<terminal> (plugin approval rule)instead ofpwd.Expected Behavior
The approval card shows the actual command (or the
description, which contains it), so you can see what you're approving.Actual Behavior
The "Command" toggle shows the synthetic label
<terminal> (plugin approval rule).description(which holdsrun\npwd) isn't rendered on that card at all, so there's no way to see the command before approving.Affected Component
Messaging Platform (if gateway-related)
N/A (CLI only)
Debug Report
Not attaching
hermes debug shareoutput: this is a deterministic UI bug reproducible from the steps above, and the shared logs carry prompt/message content and personal data that isn't needed here (see #22016). Environment dump instead:Operating System
macOS 26.5.2
Python Version
3.11.15 (hermes runtime)
Hermes Version
v0.18.2 (2026.7.7.2), upstream 5e84994, git install, up to date
Root Cause Analysis (optional)
tools/approval.pyrequest_tool_approval()sets the displayedcommandtof"<{tool_name}> (plugin approval rule)"— a synthetic allowlist label; the real command/change is put indescription.apps/desktop/src/components/assistant-ui/tool/approval.tsxinlineApprovalBarrenders onlyrequest.command(the "Command" expander) and neverrequest.description.descriptionshows only in the floating fallback bar and the always-allow dialog.descriptionon the inline card and don't touch the placeholder.Proposed Fix (optional)
Render
descriptionon the inline approval card too (and/or put the real command incommandfor command-bearing tools).Are you willing to submit a PR for this?