diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Unreleased next version
 
+# 0.6.0.4
+
+- Support `aeson-2.0.x`.
+
 # 0.6.0.3
 
 - Support GHC 9.0.1.
diff --git a/nri-prelude.cabal b/nri-prelude.cabal
--- a/nri-prelude.cabal
+++ b/nri-prelude.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           nri-prelude
-version:        0.6.0.3
+version:        0.6.0.4
 synopsis:       A Prelude inspired by the Elm programming language
 description:    Please see the README at <https://github.com/NoRedInk/haskell-libraries/tree/trunk/nri-prelude#readme>.
 category:       Web
@@ -84,7 +84,7 @@
       TypeOperators
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wpartial-fields -Wredundant-constraints -Wincomplete-uni-patterns
   build-depends:
-      aeson >=1.4.6.0 && <1.6
+      aeson >=1.4.6.0 && <2.1
     , aeson-pretty >=0.8.0 && <0.9
     , async >=2.2.2 && <2.3
     , auto-update >=0.1.6 && <0.2
@@ -105,6 +105,7 @@
     , terminal-size >=0.3.2.1 && <0.4
     , text >=1.2.3.1 && <1.3
     , time >=1.8.0.2 && <1.13
+    , unix >=2.7.2.2 && <2.8.0.0
     , vector >=0.12.1.2 && <0.13
   default-language: Haskell2010
 
@@ -175,7 +176,7 @@
       ExtendedDefaultRules
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wpartial-fields -Wredundant-constraints -Wincomplete-uni-patterns -threaded -rtsopts "-with-rtsopts=-N -T" -fno-warn-type-defaults
   build-depends:
-      aeson >=1.4.6.0 && <1.6
+      aeson >=1.4.6.0 && <2.1
     , aeson-pretty >=0.8.0 && <0.9
     , async >=2.2.2 && <2.3
     , auto-update >=0.1.6 && <0.2
@@ -196,5 +197,6 @@
     , terminal-size >=0.3.2.1 && <0.4
     , text >=1.2.3.1 && <1.3
     , time >=1.8.0.2 && <1.13
+    , unix >=2.7.2.2 && <2.8.0.0
     , vector >=0.12.1.2 && <0.13
   default-language: Haskell2010
diff --git a/src/Platform/DevLog.hs b/src/Platform/DevLog.hs
--- a/src/Platform/DevLog.hs
+++ b/src/Platform/DevLog.hs
@@ -13,6 +13,7 @@
 import qualified Platform.Internal
 import qualified System.IO
 import qualified System.IO.Unsafe
+import qualified System.Posix.Files
 import qualified Prelude
 
 -- | Write a tracing span to the development log, where it can be found by
@@ -26,6 +27,7 @@
       logFile
       System.IO.AppendMode
       ( \handle -> do
+          System.Posix.Files.setFileMode logFile System.Posix.Files.stdFileMode
           Data.ByteString.Lazy.hPut handle (Aeson.encode (now, span))
           Data.ByteString.Lazy.hPut handle "\n"
       )
