AI Coding Agent Feedback: What to Expect from the Claude Code Agent
The AI coding agent provides feedback through raw tool execution outputs, structured protocol responses for plan approvals and shutdown requests, and safety-guard error messages, all delivered via a shared message bus system.
The shareAI-lab/learn-claude-code repository implements a multi-agent architecture where AI coding agents communicate feedback through distinct channels. Understanding these feedback mechanisms helps you interpret agent responses, debug failures, and manage collaborative workflows between lead agents and teammates.
Types of AI Coding Agent Feedback
The agent surfaces feedback through five primary channels, each serving different stages of the development workflow.
Tool Execution Results
When the agent invokes tools like bash, read_file, or edit_file, it returns raw execution output directly to the conversation. In agents/s01_agent_loop.py, the run_bash function captures stdout and stderr, truncating output to 50,000 characters for performance while preserving error context.
def run_bash(command: str) -> str:
# block dangerous commands
dangerous = ["rm -rf /", "sudo", "shutdown", "reboot", "> /dev/"]
if any(d in command for d in dangerous):
return "Error: Dangerous command blocked"
try:
r = subprocess.run(command, shell=True, cwd=os.getcwd(),
capture_output=True, text=True, timeout=120)
out = (r.stdout + r.stderr).strip()
return out[:50000] if out else "(no output)"
except subprocess.TimeoutExpired:
return "Error: Timeout (120s)"
Tool output appears in the console truncated to approximately 200 characters for readability, with full output available upon request.
Plan Approval Feedback
In multi-agent workflows, teammates submit plans requiring lead approval. The handle_plan_review function in agents/s10_team_protocols.py processes these requests, allowing the lead to approve or reject plans with optional free-form commentary.
def handle_plan_review(request_id: str, approve: bool, feedback: str = "") -> str:
with _tracker_lock:
req = plan_requests.get(request_id)
if not req:
return f"Error: Unknown plan request_id '{request_id}'"
with _tracker_lock:
req["status"] = "approved" if approve else "rejected"
BUS.send(
"lead", req["from"], feedback, "plan_approval_response",
{"request_id": request_id, "approve": approve, "feedback": feedback},
)
return f"Plan {req['status']} for '{req['from']}'"
The feedback string appears in the lead's inbox as part of the structured response, enabling contextual guidance on why a plan was rejected or what modifications are required.
Shutdown Request Feedback
When coordinating agent lifecycles, leads request graceful shutdowns through handle_shutdown_request in agents/s10_team_protocols.py. Teammates respond with approval status and optional reasoning.
def handle_shutdown_request(teammate: str) -> str:
req_id = str(uuid.uuid4())[:8]
shutdown_requests[req_id] = {"target": teammate, "status": "pending"}
BUS.send(
"lead", teammate, "Please shut down gracefully.",
"shutdown_request", {"request_id": req_id},
)
return f"Shutdown request {req_id} sent to '{teammate}' (status: pending)"
The teammate's response includes a boolean approve field and a feedback message indicating completion status or rejection rationale.
Inbox Notifications and Error Messages
All feedback flows through the shared BUS message queue. The lead agent checks BUS.read_inbox at the start of each loop iteration in agents/s10_team_protocols.py, retrieving JSON payloads containing request IDs, approval statuses, and feedback strings.
Error feedback occurs when safety guards trigger. Dangerous commands return "Error: Dangerous command blocked", while timeouts return "Error: Timeout (120s)". These messages originate from exception handlers in run_bash and analogous _run_* helpers defined in agents/s10_team_protocols.py lines 3-61.
Key Files in the Feedback System
| File | Role in Feedback Flow |
|---|---|
agents/s01_agent_loop.py |
Core loop dispatching tools and capturing execution output via run_bash (lines 53-62). |
agents/s10_team_protocols.py |
Implements plan approval (handle_plan_review, lines 361-370) and shutdown protocols (handle_shutdown_request, lines 49-58). |
agents/s11_autonomous_agents.py |
Mirrors protocol logic for autonomous agent variants. |
agents/s_full.py |
Full-stack implementation combining all feedback mechanisms. |
docs/en/s10-team-protocols.md |
Documentation explaining shutdown and plan-approval protocols. |
Summary
- Tool execution feedback provides raw command output, truncated for readability but preserving full context for debugging.
- Plan approval workflows enable structured feedback through the
feedbackparameter inhandle_plan_review, allowing leads to reject plans with specific guidance. - Shutdown coordination returns status messages indicating whether graceful shutdown completed successfully or was rejected with reasoning.
- Safety mechanisms generate immediate error feedback when dangerous commands are blocked or operations timeout after 120 seconds.
- Message bus architecture centralizes all feedback through
BUS.read_inbox, ensuring consistent delivery across the multi-agent system.
Frequently Asked Questions
What happens when the AI coding agent encounters a dangerous command?
The agent blocks the execution and returns an immediate error message. In agents/s01_agent_loop.py, the run_bash function checks commands against a blacklist including rm -rf /, sudo, and shutdown. If matched, it returns "Error: Dangerous command blocked" without executing the command.
How long can tool output be before it gets truncated?
The agent preserves up to 50,000 characters of raw output in run_bash, but displays approximately 200 characters in the console for readability. If you need the full output, you can request it explicitly or check the returned string which contains the complete result up to the 50,000 character limit.
Can I provide specific feedback when rejecting a teammate's plan?
Yes. The handle_plan_review function in agents/s10_team_protocols.py accepts an optional feedback parameter. When you set approve to false and include a feedback string, the teammate receives your specific reasoning through the message bus, enabling iterative refinement of the proposed plan.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →