<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rob Koch 🏃🏔🥃💻</title>
    <description>The latest articles on DEV Community by Rob Koch 🏃🏔🥃💻 (@robcube).</description>
    <link>https://dev.to/robcube</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F429594%2Fbdf13db0-ccf1-40eb-8f6d-47c897636f83.png</url>
      <title>DEV Community: Rob Koch 🏃🏔🥃💻</title>
      <link>https://dev.to/robcube</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robcube"/>
    <language>en</language>
    <item>
      <title>Moving Codex Threads to a New Mac</title>
      <dc:creator>Rob Koch 🏃🏔🥃💻</dc:creator>
      <pubDate>Sat, 20 Jun 2026 01:25:59 +0000</pubDate>
      <link>https://dev.to/robcube/moving-codex-threads-to-a-new-mac-2n3i</link>
      <guid>https://dev.to/robcube/moving-codex-threads-to-a-new-mac-2n3i</guid>
      <description>&lt;p&gt;As an Open AI Partner and I'm in the middle of switching Macs from M1 Air to M4 Air. What. a. pain. Especially in the enterprise world where you cannot just simply migrate everything from one Mac to another like you can do personally. You need to set it up as new. So here we go...&lt;/p&gt;

&lt;p&gt;I didn't want too much ceremony moving my, err, precious,  OpenAI Codex Desktop setup from one Mac to another and wanted to preserve my active Codex app threads, local state, installed skills, plugins, and working context. Hey, don't judge me on choice of LLMs, I do use Kiro too tho'!&lt;/p&gt;

&lt;p&gt;Politics aside, the short version: most of what you need lives under &lt;code&gt;~/.codex&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is not a polished migration tool. It is a pragmatic backup-and-restore approach that worked for me moving Codex local state between Macs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;insert the Staples easy button here&amp;gt;&lt;/code&gt; (oh, the AI didn't work, but you get the gist 🤣)&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gets Moved
&lt;/h2&gt;

&lt;p&gt;The important Codex state is in:&lt;br&gt;
&lt;code&gt;~/.codex&lt;/code&gt;&lt;br&gt;
The useful parts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/sessions/&lt;/code&gt; - conversation rollout files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/session_index.jsonl&lt;/code&gt; - thread index&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/state_*.sqlite&lt;/code&gt; - thread metadata and local state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/logs_*.sqlite&lt;/code&gt; - local runtime logs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/config.toml&lt;/code&gt; - Codex configuration&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/plugins/&lt;/code&gt;, &lt;code&gt;~/.codex/skills/&lt;/code&gt;, &lt;code&gt;~/.codex/cache/&lt;/code&gt; - installed plugins, skills, and cached assets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~/.codex/auth.json&lt;/code&gt; - authentication data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treat the backup as sensitive because it can include auth tokens and local conversation history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back Up The Old Mac
&lt;/h2&gt;

&lt;p&gt;Quit Codex first, then run this from Terminal on the old, ok, retiring, Mac:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ COPYFILE_DISABLE=1 tar --no-xattrs \&lt;br&gt;
  --exclude='.codex/vendor_imports/skills/.git/fsmonitor--daemon.ipc' \&lt;br&gt;
  -czf ~/Desktop/codex-backup.tgz \&lt;br&gt;
  -C ~ .codex&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If your version of &lt;code&gt;tar&lt;/code&gt; does not support &lt;code&gt;--no-xattrs&lt;/code&gt;, use this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ COPYFILE_DISABLE=1 tar \&lt;br&gt;
  --exclude='.codex/vendor_imports/skills/.git/fsmonitor--daemon.ipc' \&lt;br&gt;
  -czf ~/Desktop/codex-backup.tgz \&lt;br&gt;
  -C ~ .codex&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The exclude matters because git can leave a filesystem socket at:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ ~/.codex/vendor_imports/skills/.git/fsmonitor--daemon.ipc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar&lt;/code&gt; cannot archive sockets, and you do not need that file on the new machine.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;COPYFILE_DISABLE=1&lt;/code&gt; and &lt;code&gt;--no-xattrs&lt;/code&gt; flags avoid macOS extended attribute noise. Those attributes are not important for restoring the Codex thread content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restore On The New Mac
&lt;/h2&gt;

&lt;p&gt;Move &lt;code&gt;codex-backup.tgz&lt;/code&gt; to the new Mac's Desktop.&lt;/p&gt;

&lt;p&gt;Quit Codex on the new Mac, then run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ cd ~&lt;/code&gt;&lt;br&gt;
&lt;code&gt;$ mv ~/.codex ~/.codex.backup.$(date +%Y%m%d-%H%M%S) 2&amp;gt;/dev/null&lt;/code&gt;&lt;br&gt;
&lt;code&gt;$ COPYFILE_DISABLE=1 tar -xzf ~/Desktop/codex-backup.tgz -C ~&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then reopen Codex.&lt;/p&gt;

&lt;p&gt;Your threads should reappear, including their local metadata and session files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do Not Forget The Workspace
&lt;/h2&gt;

&lt;p&gt;Codex thread history and project files are separate.&lt;br&gt;
Moving &lt;code&gt;~/.codex&lt;/code&gt; restores the Codex-side state, but it does not move your actual project folders. If a thread points to a workspace path, make sure that folder also exists on the new Mac.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ mkdir -p ~/Documents/"Client Pursuit"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If your work lives in OneDrive, let OneDrive fully sync the relevant folders before expecting every file reference to work:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ ~/Library/CloudStorage/OneDrive-Slalom/Documents/"Client Pursuit"&lt;/code&gt;&lt;br&gt;
-- which might be one of your many (manyⁿ) folders!&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Check
&lt;/h2&gt;

&lt;p&gt;After reopening Codex:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm the thread appears in the sidebar.&lt;/li&gt;
&lt;li&gt;Open it and check that recent messages are present.&lt;/li&gt;
&lt;li&gt;Confirm the workspace path exists.&lt;/li&gt;
&lt;li&gt;Reconnect any cloud connectors if prompted.
Some connectors may show as installed but still require re-authentication. That is normal when moving machines.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cleanup
&lt;/h2&gt;

&lt;p&gt;After confirming the transfer worked, delete the archive from both machines:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ rm ~/Desktop/codex-backup.tgz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The archive contains local Codex state and may include credentials, so do not leave it sitting around.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Practical Summary
&lt;/h2&gt;

&lt;p&gt;Back up &lt;code&gt;~/.codex&lt;/code&gt;, exclude the Git fsmonitor socket, restore it on the new machine, then make sure the referenced project folders are present.&lt;/p&gt;

&lt;p&gt;That is enough to carry active Codex threads and local context across Macs. It doesn't mean I give OpenAI an easy way out -- this should be easy!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
