Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

A direct sub-agent chat cannot be stopped: no cancel on the instance surface, and the global stop omits the target

Open
#459 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
68/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
javascript, python
Domain
api, frontend

Research direction

Start in ui-web/src/live/230-tabs.js and ui-web/src/live/080-overrides.js, then read the turn.cancel handling documented in raven/rpc/methods/turn.py around line 650. Reproduce a long-running direct instance turn and trace how turn.send resolves its target versus how DS.composer.stop chooses the lane. Done means a direct instance turn can be stopped from the page without the global stop silently missing it.

Written by the indexing model from the issue text.

Description

Summary

A direct chat with a sub-agent instance cannot be stopped from the page. The instance surface exposes no cancel, and the global stop cannot reach one: it sends turn.cancel without a target, which the server documents as missing every direct turn. The backend can already do it -- turn.cancel accepts a target and cancels a direct lane correctly when one is passed.

Steps to reproduce

  1. Open a session, create or open a sub-agent instance, and send it something long-running from the instance composer.
  2. Look for a way to stop it, on the instance surface and with the global stop (the go button's other half, or Esc).

Expected behavior

A turn a person started can be stopped by that person. The main agent's turn can be, and a direct turn is started from the same composer with the same turn.send.

Actual behavior

Nothing stops it. The two halves of the same conversation are asymmetric:

send stop
main agent turn.send { session_key } turn.cancel { session_key } -- works
direct instance chat turn.send { session_key, target: { agent, handle } } (ui-web/src/live/230-tabs.js:65) no call exists

The instance surface in 230-tabs.js offers instanceHistory, instanceForget, instanceSend, instanceCreate, instanceMode, instanceSetMode, instanceSetModel. There is no cancel; stop, cancel, busy and cancellable do not appear in that file at all.

The global stop cannot substitute, for two separate reasons:

// ui-web/src/live/080-overrides.js:561
DS.composer.stop = function () {
  if (!turn.cancellable()) return;
  const owner = sessionCurrent();
  ...
  rpc.call('turn.cancel', { session_key: owner })
  • No target is passed, and the server states what that costs: "target names which lane to cancel and must be resolved the same way turn.send resolves the lane it binds, or the lookup misses every direct turn: those are registered under direct_lane(...), never under the bare session key." (raven/rpc/methods/turn.py:650)
  • The early return is silent, so on the path where the guard does not hold the reader gets no feedback at all -- the same nothing as a stop that ran and found nothing to stop.

The backend is not the gap

turn.cancel with a target works. Cancelling two live direct turns over /rpc today:

turn.cancel {"session_key": "<session>", "target": {"agent": "Raven-Design", "handle": "<handle>"}}
  -> {"cancelled": true}

Both instances stopped, and a subsequent turn.send to the same handles started clean turns. So this is the page not wiring a capability that is already there and already shaped for it.

Environment

macOS, raven from the repo working tree, web UI at current main.

Note on scope

Whether the control belongs on the instance surface, or the global stop should resolve the lane the composer is currently addressing, is a design call for whoever owns the composer -- the second would also fix the silent return for free, since a direct turn would then be cancellable. Filing the defect rather than the fix.

Dominant language
Python
Stars
4.1k
Forks
94
Avg merge
16h 34m
Merged PRs (30d)
444

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from EverMind-AI/Raven

All issues in EverMind-AI/Raven

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.