diff --git a/src/gn/import_manager.cc b/src/gn/import_manager.cc
index a4928bf..69f44b4 100644
--- a/src/gn/import_manager.cc
+++ b/src/gn/import_manager.cc
@@ -125,14 +125,14 @@
       if (TracingEnabled() &&
           TicksDelta(import_block_end, import_block_begin).InMilliseconds() >
               kImportBlockTraceThresholdMS) {
-        auto* import_block_trace =
-            new TraceItem(TraceItem::TRACE_IMPORT_BLOCK, file.value(),
-                          std::this_thread::get_id());
+        auto import_block_trace = std::make_unique<TraceItem>(
+            TraceItem::TRACE_IMPORT_BLOCK, file.value(),
+            std::this_thread::get_id());
         import_block_trace->set_begin(import_block_begin);
         import_block_trace->set_end(import_block_end);
         import_block_trace->set_toolchain(
             scope->settings()->toolchain_label().GetUserVisibleName(false));
-        AddTrace(import_block_trace);
+        AddTrace(std::move(import_block_trace));
       }
     }
 
diff --git a/src/gn/trace.cc b/src/gn/trace.cc
index c6eeed2..f812710 100644
--- a/src/gn/trace.cc
+++ b/src/gn/trace.cc
@@ -30,18 +30,25 @@
   TraceLog() { events_.reserve(16384); }
   // Trace items leaked intentionally.
 
-  void Add(TraceItem* item) {
+  void Add(std::unique_ptr<TraceItem> item) {
     std::lock_guard<std::mutex> lock(lock_);
-    events_.push_back(item);
+    events_.push_back(std::move(item));
   }
 
   // Returns a copy for threadsafety.
-  std::vector<TraceItem*> events() const { return events_; }
+  std::vector<TraceItem*> events() const {
+    std::vector<TraceItem*> events;
+    std::lock_guard<std::mutex> lock(lock_);
+    events.reserve(events_.size());
+    for (const auto& e : events_)
+      events.push_back(e.get());
+    return events;
+  }
 
  private:
-  std::mutex lock_;
+  mutable std::mutex lock_;
 
-  std::vector<TraceItem*> events_;
+  std::vector<std::unique_ptr<TraceItem>> events_;
 
   TraceLog(const TraceLog&) = delete;
   TraceLog& operator=(const TraceLog&) = delete;
@@ -120,18 +127,17 @@
 TraceItem::~TraceItem() = default;
 
 ScopedTrace::ScopedTrace(TraceItem::Type t, const std::string& name)
-    : item_(nullptr), done_(false) {
+    : done_(false) {
   if (trace_log) {
-    item_ = new TraceItem(t, name, std::this_thread::get_id());
+    item_ = std::make_unique<TraceItem>(t, name, std::this_thread::get_id());
     item_->set_begin(TicksNow());
   }
 }
 
-ScopedTrace::ScopedTrace(TraceItem::Type t, const Label& label)
-    : item_(nullptr), done_(false) {
+ScopedTrace::ScopedTrace(TraceItem::Type t, const Label& label) : done_(false) {
   if (trace_log) {
-    item_ = new TraceItem(t, label.GetUserVisibleName(false),
-                          std::this_thread::get_id());
+    item_ = std::make_unique<TraceItem>(t, label.GetUserVisibleName(false),
+                                        std::this_thread::get_id());
     item_->set_begin(TicksNow());
   }
 }
@@ -155,7 +161,7 @@
     done_ = true;
     if (trace_log) {
       item_->set_end(TicksNow());
-      AddTrace(item_);
+      AddTrace(std::move(item_));
     }
   }
 }
@@ -169,8 +175,8 @@
   return !!trace_log;
 }
 
-void AddTrace(TraceItem* item) {
-  trace_log->Add(item);
+void AddTrace(std::unique_ptr<TraceItem> item) {
+  trace_log->Add(std::move(item));
 }
 
 std::string SummarizeTraces() {
diff --git a/src/gn/trace.h b/src/gn/trace.h
index b89e82a..b59cd34 100644
--- a/src/gn/trace.h
+++ b/src/gn/trace.h
@@ -5,6 +5,7 @@
 #ifndef TOOLS_GN_TRACE_H_
 #define TOOLS_GN_TRACE_H_
 
+#include <memory>
 #include <string>
 #include <thread>
 
@@ -80,7 +81,7 @@
   void Done();
 
  private:
-  TraceItem* item_;
+  std::unique_ptr<TraceItem> item_;
   bool done_;
 };
 
@@ -90,8 +91,8 @@
 // Returns whether tracing is enabled.
 bool TracingEnabled();
 
-// Adds a trace event to the log. Takes ownership of the pointer.
-void AddTrace(TraceItem* item);
+// Adds a trace event to the log.
+void AddTrace(std::unique_ptr<TraceItem> item);
 
 // Returns a summary of the current traces, or the empty string if tracing is
 // not enabled.
