diff --git a/src/claude_agent_sdk/_internal/query.py b/src/claude_agent_sdk/_internal/query.py index 76460100..e4dcbfaa 100644 --- a/src/claude_agent_sdk/_internal/query.py +++ b/src/claude_agent_sdk/_internal/query.py @@ -300,7 +300,13 @@ async def _handle_control_request(self, request: SDKControlRequest) -> None: "response": response_data, }, } - await self.transport.write(json.dumps(success_response) + "\n") + try: + await self.transport.write(json.dumps(success_response) + "\n") + except Exception as write_err: + # Transport not ready (likely during cleanup) - log but don't fail + logger.debug( + f"Could not write control response (transport not ready): {write_err}" + ) except Exception as e: # Send error response @@ -312,7 +318,13 @@ async def _handle_control_request(self, request: SDKControlRequest) -> None: "error": str(e), }, } - await self.transport.write(json.dumps(error_response) + "\n") + try: + await self.transport.write(json.dumps(error_response) + "\n") + except Exception as write_err: + # Transport not ready (likely during cleanup) - log but don't fail + logger.debug( + f"Could not write error response (transport not ready): {write_err}" + ) async def _send_control_request(self, request: dict[str, Any]) -> dict[str, Any]: """Send control request to CLI and wait for response."""