handle.stop() intermittently leaves _stop_requested false, agent never exits its loop

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

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python
Domain
api, backend

Research direction

Run the three-iteration repro in examples/agents/79_agent_message_bus.py, then inspect the /api/agent/{id}/stop and /api/workflow/{id} responses alongside server logs for a failing run. Done means the stop request reliably sets _stop_requested to true and the agent exits its loop instead of timing out on join(timeout=30).

Written by the indexing model from the issue text.

Description

bug

handle.stop() returns without raising but sometimes _stop_requested is never set to true.

In examples/agents/79_agent_message_bus.py the DoWhile condition is not flipped (1 of 3 runs), the agent stays blocked on PULL_WORKFLOW_MESSAGES, and the caller dies on join(timeout=30)TimeoutError.

Repro

cd examples/agents
for i in 1 2 3; do uv run python 79_agent_message_bus.py; echo "exit=$?"; done

On a failing run, take the id from Writer started: <id>:

curl -s "http://localhost:8080/api/workflow/<id>" | jq '.status, .variables._stop_requested'
# RUNNING, false   <- stop() did not set the flag

curl -s -X POST "http://localhost:8080/api/agent/<id>/stop" -w '%{http_code}\n'   # 200
curl -s "http://localhost:8080/api/workflow/<id>" | jq '.variables._stop_requested'
# true             <- endpoint works when called by hand

Environment: conductor-oss server (agent runtime + WMQ enabled), python-sdk main.

Ruled out

  • Endpoint itself — works by hand on the same stuck execution.
  • Loop clobbering the flag — per-iteration SET_VARIABLE writes only _last_tool_results and _agent_state.
  • stop() raising — it returned normally.
  • The WMQ unblock message — sent after the flag write, so it can't produce a false flag.

Unexplained: why the POST didn't apply despite a 2xx. Server logs for a failing run would settle it.

🤖 Generated with Claude Code

Dominant language
Python
Stars
104
Forks
43
Avg merge
1d 13h
Merged PRs (30d)
4

Contributor guide

No contributing guide indexed for this repository

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 conductor-oss/python-sdk

All issues in conductor-oss/python-sdk

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.