[BUG] TaskUpdate with owner auto-sends task_assignment messages to team lead, causing confusion and wasted tokens
Description
When a teammate calls TaskUpdate to claim a task by setting owner, the system automatically sends a task_assignment JSON message to the parent agent (team lead / orchestrator). These system-generated messages are indistinguishable from intentional teammate messages and cause confusion.
Steps to Reproduce
- Create a team with
TeamCreate - Create tasks with
TaskCreate - Spawn a teammate
- Teammate calls
TaskUpdatewithowner: "teammate-name"andstatus: "in_progress"to claim a task
Expected: Task ownership is updated silently (or with a clearly labeled system notification)
Actual: A task_assignment message is automatically sent to the parent agent:
{"type":"task_assignment","taskId":"1","subject":"...","description":"...","assignedBy":"teammate-name","timestamp":"..."}
This message arrives as a <teammate-message> from the teammate, making it appear as if the teammate is deliberately assigning tasks to the parent.
Impact
- Token waste: The parent agent (orchestrator/team lead) interprets these as the teammate trying to assign work to it and sends correction messages telling the teammate to stop — but the teammate never sent them in the first place and can't stop them.
- Correction messages are also wasted: In our case, the orchestrator sent 3 correction messages, but only 1 was ever delivered (messages queue while the teammate is busy), and it arrived after all work was already done.
- Recurring across sessions: This affects every team session that uses TaskUpdate with owner assignment.
Evidence
We confirmed the root cause by analyzing both conversation transcripts:
- Team lead's outgoing messages: 7 proper plain-text status reports via
SendMessage. Zerotask_assignmentmessages. The stringtask_assignmentdoes not appear anywhere in the team lead's conversation.
- Timestamp matching: Every
task_assignmentmessage received by the orchestrator matches aTaskUpdatecall by the teammate to the millisecond:
| TaskUpdate result timestamp | task_assignment message timestamp |
|---|---|
| 22:32:14.339 | 22:32:14.338 |
| 22:32:15.094 | 22:32:15.093 |
| 22:38:09.540 | 22:38:09.540 |
| 22:51:20.552 | 22:51:20.551 |
- Team lead was innocent: It followed the correct protocol (claim task via TaskUpdate, report status via SendMessage). The
task_assignmentmessages were injected by the system, not the agent.
Suggested Fix
Either:
- Don't auto-send
task_assignmentmessages whenTaskUpdatesetsowner— the parent can checkTaskListif it wants task status - Clearly label them as system notifications so they're distinguishable from teammate messages (e.g., use a
systemsender ID rather than the teammate's ID) - Make it configurable — allow opting out of task assignment notifications
Environment
- Claude Code CLI v2.1.71
- Using teams with
TeamCreate+TaskCreate+TaskUpdate+SendMessage
🤖 Generated with Claude Code
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗