diff --git a/src/claude_agent_sdk/_internal/message_parser.py b/src/claude_agent_sdk/_internal/message_parser.py index 4bfe8145..7f893d54 100644 --- a/src/claude_agent_sdk/_internal/message_parser.py +++ b/src/claude_agent_sdk/_internal/message_parser.py @@ -124,6 +124,9 @@ def parse_message(data: dict[str, Any]) -> Message: model=data["message"]["model"], parent_tool_use_id=data.get("parent_tool_use_id"), error=data["message"].get("error"), + # Per-step fields from Anthropic API response + message_id=data["message"].get("id"), + usage=data["message"].get("usage"), ) except KeyError as e: raise MessageParseError( diff --git a/src/claude_agent_sdk/types.py b/src/claude_agent_sdk/types.py index 9c09345f..244115e6 100644 --- a/src/claude_agent_sdk/types.py +++ b/src/claude_agent_sdk/types.py @@ -574,6 +574,9 @@ class AssistantMessage: model: str parent_tool_use_id: str | None = None error: AssistantMessageError | None = None + # Per-step fields from Anthropic API response + message_id: str | None = None # API message ID (e.g., "msg_...") + usage: dict[str, Any] | None = None # Per-step token usage @dataclass