diff --git a/acp_adapter/session.py b/acp_adapter/session.py index d6dace66b4..61d06432a7 100644 --- a/acp_adapter/session.py +++ b/acp_adapter/session.py @@ -466,17 +466,10 @@ class SessionManager: except Exception: logger.debug("Failed to update ACP session metadata", exc_info=True) - # Replace stored messages with current history. - db.clear_messages(state.session_id) - for msg in state.history: - db.append_message( - session_id=state.session_id, - role=msg.get("role", "user"), - content=msg.get("content"), - tool_name=msg.get("tool_name") or msg.get("name"), - tool_calls=msg.get("tool_calls"), - tool_call_id=msg.get("tool_call_id"), - ) + # Replace stored messages with current history atomically so a + # mid-rewrite failure rolls back and the previously persisted + # conversation is preserved (salvaged from #13675). + db.replace_messages(state.session_id, state.history) except Exception: logger.warning("Failed to persist ACP session %s", state.session_id, exc_info=True)