Skip to content

Fix: KeyError 'message' in response.py when both keys missing#927

Closed
hurtdidit wants to merge 1 commit intoagent0ai:developmentfrom
hurtdidit:fix/response-py-keyerror-dev
Closed

Fix: KeyError 'message' in response.py when both keys missing#927
hurtdidit wants to merge 1 commit intoagent0ai:developmentfrom
hurtdidit:fix/response-py-keyerror-dev

Conversation

@hurtdidit
Copy link
Copy Markdown
Contributor

Bug Description

response.py execute() crashes with KeyError: 'message' when neither text nor message keys exist in self.args dictionary.

Current Buggy Code (line 7)

return Response(message=self.args["text"] if "text" in self.args else self.args["message"], break_loop=True)

When both keys are missing, this throws KeyError: 'message' and causes the agent to completely stall.

Proposed Fix

message_text = self.args.get("text") or self.args.get("message", "")
return Response(message=message_text, break_loop=True)

Using .get() with a safe fallback prevents the crash.

Impact

  • Causes agents to completely stall when edge case occurs
  • Confirmed on multiple Agent Zero instances
  • Works fine in normal cases (happy path) but fails on error handling edge cases

Testing

  1. Trigger response tool with missing text/message args (edge case)
  2. With fix: Returns empty response safely instead of crashing
  3. Normal usage: No change in behavior

Note: This PR replaces #925 which incorrectly targeted main instead of development.

Bug: response.py execute() crashes with KeyError when neither 'text' nor
'message' keys exist in self.args dictionary.

Current buggy code:
  self.args['text'] if 'text' in self.args else self.args['message']

This fails when both keys are missing, causing agent to completely stall.

Fix: Use .get() method with safe fallback:
  message_text = self.args.get('text') or self.args.get('message', '')
  return Response(message=message_text, break_loop=True)

Impact: Prevents agent stalls in edge cases where response tool is
called without proper arguments.
hurtdidit pushed a commit to hurtdidit/agent-zero that referenced this pull request Feb 1, 2026
Empty or whitespace-only AI messages cause API validation errors with strict
providers (OpenAI, Z.ai, GLM):
  "Assistant messages must have either content or tool_calls"

This is a companion fix to PR agent0ai#927 (response.py KeyError fix). When that fix
returns an empty string instead of crashing, the empty string can become an
empty AIMessage that fails API validation.

Changes:
- Pre-compute content before creating message objects
- Skip AI messages where content is None, empty, or whitespace-only
- Human messages are not filtered (they can be empty per spec)

Tested on 4 production A0 instances.
ky3mu4lp pushed a commit to ky3mu4lp/agent-zero that referenced this pull request Feb 24, 2026
Empty or whitespace-only AI messages cause API validation errors with strict
providers (OpenAI, Z.ai, GLM):
  "Assistant messages must have either content or tool_calls"

This is a companion fix to PR agent0ai#927 (response.py KeyError fix). When that fix
returns an empty string instead of crashing, the empty string can become an
empty AIMessage that fails API validation.

Changes:
- Pre-compute content before creating message objects
- Skip AI messages where content is None, empty, or whitespace-only
- Human messages are not filtered (they can be empty per spec)

Tested on 4 production A0 instances.
@github-actions
Copy link
Copy Markdown

Closing due to inactivity of 90 days.

@github-actions github-actions Bot closed this Apr 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant