Skip to content

fix(acp): run /steer as a regular prompt on idle sessions#18258

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-cc5683f2
May 1, 2026
Merged

fix(acp): run /steer as a regular prompt on idle sessions#18258
teknium1 merged 1 commit into
mainfrom
hermes/hermes-cc5683f2

Conversation

@teknium1
Copy link
Copy Markdown
Contributor

@teknium1 teknium1 commented May 1, 2026

Summary

/steer <text> on an idle ACP session now runs the payload as a normal user prompt instead of silently appending to the queue.

Before: @EddyLeeKhane (and anyone on Zed / other ACP clients) typed /steer foo with no active turn, got back "No active turn — queued for the next turn" — looks like /queue even though they never typed /queue.

Changes

  • acp_adapter/server.py: extend the existing /steer salvage block so that when the session is idle and there's nothing interrupted to replay, we rewrite user_text to the steer payload and fall through to the normal prompt path. Matches gateway/run.py ~L4898.
  • tests/acp_adapter/test_acp_commands.py: regression test covering the idle-steer case.

Validation

scripts/run_tests.sh tests/acp_adapter/test_acp_commands.py -v
5 passed in 1.43s
/steer input Before After
running turn inject mid-run (ok) inject mid-run (unchanged)
idle + interrupted prompt replay + guidance (ok) replay + guidance (unchanged)
idle + nothing to salvage append to queued_prompts run payload as a regular prompt

Reported by

@EddyLeeKhane (x.com)

When a user types /steer <text> on an ACP session that isn't actively
running a turn (and there's no interrupted-prompt salvage available),
_cmd_steer silently appended to state.queued_prompts and replied
"No active turn — queued for the next turn". That looks identical to
/queue output even though the user never typed /queue — @EddyLeeKhane
reported this as "/steer never works, gets queued instead".

Rewrite the payload to a plain user prompt before the slash-intercept
fires, matching the gateway's idle-/steer fallthrough in
gateway/run.py ~L4898.
@teknium1 teknium1 merged commit 41fa1f1 into main May 1, 2026
10 of 11 checks passed
@teknium1 teknium1 deleted the hermes/hermes-cc5683f2 branch May 1, 2026 05:45
@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists comp/acp Agent Communication Protocol adapter labels May 1, 2026
donald131 pushed a commit to donald131/hermes-agent that referenced this pull request May 2, 2026
…ch#18258)

When a user types /steer <text> on an ACP session that isn't actively
running a turn (and there's no interrupted-prompt salvage available),
_cmd_steer silently appended to state.queued_prompts and replied
"No active turn — queued for the next turn". That looks identical to
/queue output even though the user never typed /queue — @EddyLeeKhane
reported this as "/steer never works, gets queued instead".

Rewrite the payload to a plain user prompt before the slash-intercept
fires, matching the gateway's idle-/steer fallthrough in
gateway/run.py ~L4898.
nickdlkk pushed a commit to nickdlkk/hermes-agent that referenced this pull request May 11, 2026
…ch#18258)

When a user types /steer <text> on an ACP session that isn't actively
running a turn (and there's no interrupted-prompt salvage available),
_cmd_steer silently appended to state.queued_prompts and replied
"No active turn — queued for the next turn". That looks identical to
/queue output even though the user never typed /queue — @EddyLeeKhane
reported this as "/steer never works, gets queued instead".

Rewrite the payload to a plain user prompt before the slash-intercept
fires, matching the gateway's idle-/steer fallthrough in
gateway/run.py ~L4898.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/acp Agent Communication Protocol adapter P2 Medium — degraded but workaround exists type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants