Tutorials · Claude Agent SDK · examples / python / 02_fix_bugs.pyExample code

Example code · python

02_fix_bugs.py

The quickstart agent. Finds and fixes crash bugs in src/utils.py with acceptEdits.

Raw fileDownload all examples (zip)See its output →

Used in Part 1 §5 · An agent that fixes bugs

"""02: The quickstart agent. Finds and fixes crash bugs in src/utils.py with acceptEdits."""

import asyncio
import subprocess
from pathlib import Path

from claude_agent_sdk import AssistantMessage, ClaudeAgentOptions, ResultMessage, ToolUseBlock, query
from demo_util import PROJECT


async def main():
    async for message in query(
        prompt="Review src/utils.py for bugs that would cause crashes. Fix any issues you find.",
        options=ClaudeAgentOptions(
            cwd=PROJECT,
            allowed_tools=["Read", "Edit", "Glob"],   # auto-approve these tools
            permission_mode="acceptEdits",            # auto-approve file edits
            max_turns=10,
        ),
    ):
        if isinstance(message, AssistantMessage):
            for block in message.content:
                if hasattr(block, "text"):
                    print(block.text)
                elif isinstance(block, ToolUseBlock):
                    print(f"Tool: {block.name} -> {block.input.get('file_path', '')}")
        elif isinstance(message, ResultMessage):
            print(f"Done: {message.subtype} (cost ${message.total_cost_usd:.4f})")

    print("\n--- diff against the original file ---")
    pristine = Path(PROJECT).parent / "project_pristine" / "src" / "utils.py"
    diff = subprocess.run(
        ["diff", "-u", str(pristine), str(Path(PROJECT) / "src" / "utils.py")],
        capture_output=True, text=True,
    )
    print(diff.stdout)


asyncio.run(main())

40 lines · Back to the folder