<?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: Joshua Segeren</title>
    <description>The latest articles on DEV Community by Joshua Segeren (@jsegeren).</description>
    <link>https://dev.to/jsegeren</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%2F4119768%2Fa66b8323-9741-4e5c-b895-4ad6f2349924.png</url>
      <title>DEV Community: Joshua Segeren</title>
      <link>https://dev.to/jsegeren</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jsegeren"/>
    <language>en</language>
    <item>
      <title>How to move OpenAI Codex to a new Mac without losing local work</title>
      <dc:creator>Joshua Segeren</dc:creator>
      <pubDate>Fri, 11 Sep 2026 21:31:03 +0000</pubDate>
      <link>https://dev.to/jsegeren/how-to-move-openai-codex-to-a-new-mac-without-losing-local-work-2l69</link>
      <guid>https://dev.to/jsegeren/how-to-move-openai-codex-to-a-new-mac-without-losing-local-work-2l69</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi01swaqmcltz7nl6ke8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi01swaqmcltz7nl6ke8w.png" alt="Codex Migrate: Change the Mac. Keep the work." width="799" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Signing into the same ChatGPT/OpenAI account on a new Mac does &lt;strong&gt;not necessarily recreate your complete local Codex working environment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your account may be available while important work remains on the old machine: local conversations, project organization, custom skills, configuration, automations, unpushed branches, linked worktrees, stashes, and unfinished files.&lt;/p&gt;

&lt;p&gt;This guide explains what to check, what a plain Git clone misses, and how to move the work without overwriting the new Mac's identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: do not erase the old Mac
&lt;/h2&gt;

&lt;p&gt;Keep the old Mac unchanged until you have opened important conversations and worked successfully from the new one. Maintain an independent backup too. A migration progress bar is not proof that every conversation, Git object, worktree, or untracked file arrived intact.&lt;/p&gt;

&lt;p&gt;On the new Mac:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Codex or the ChatGPT desktop app with Codex.&lt;/li&gt;
&lt;li&gt;Open it and sign in once.&lt;/li&gt;
&lt;li&gt;Keep the new installation's authentication and installation identity.&lt;/li&gt;
&lt;li&gt;Close Codex on both migration accounts before the final replacement step.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What actually needs to move?
&lt;/h2&gt;

&lt;p&gt;There are two separate categories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Codex state
&lt;/h3&gt;

&lt;p&gt;Depending on your Codex version and setup, local state can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;active and archived conversations&lt;/li&gt;
&lt;li&gt;configuration and project organization&lt;/li&gt;
&lt;li&gt;rules, memories, skills, and automations&lt;/li&gt;
&lt;li&gt;local databases and transcript files&lt;/li&gt;
&lt;li&gt;references to workspace paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A blanket copy of the old &lt;code&gt;~/.codex&lt;/code&gt; directory is risky because it can also replace machine-specific state. In particular, do not blindly overwrite the new Mac's &lt;code&gt;auth.json&lt;/code&gt; or &lt;code&gt;installation_id&lt;/code&gt; with the old Mac's values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspace folders
&lt;/h3&gt;

&lt;p&gt;A repository is more than the files visible in Finder. If you want to resume exactly where you stopped, selected workspace folders may need their complete &lt;code&gt;.git&lt;/code&gt; directories plus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local branches and tags&lt;/li&gt;
&lt;li&gt;stashes and remote refs&lt;/li&gt;
&lt;li&gt;uncommitted and untracked files&lt;/li&gt;
&lt;li&gt;linked-worktree metadata&lt;/li&gt;
&lt;li&gt;alternate Git object locations&lt;/li&gt;
&lt;li&gt;project-specific skills or configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything important is committed and pushed, a fresh &lt;code&gt;git clone&lt;/code&gt; may be enough. If not, cloning from the remote cannot recover work that never reached it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is rsync enough?
&lt;/h2&gt;

&lt;p&gt;It can be—if you already know every relevant path, exclusion, dependency, ownership rule, backup step, and verification check.&lt;/p&gt;

&lt;p&gt;The copy command is not the hard part. The hard part is answering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I include every workspace and linked worktree?&lt;/li&gt;
&lt;li&gt;Did I preserve the new Mac's login and installation identity?&lt;/li&gt;
&lt;li&gt;Are absolute paths different because the usernames changed?&lt;/li&gt;
&lt;li&gt;Did a cloud-storage placeholder look like a real local file?&lt;/li&gt;
&lt;li&gt;Was the transfer interrupted halfway through?&lt;/li&gt;
&lt;li&gt;Is the destination backup complete and readable?&lt;/li&gt;
&lt;li&gt;Can I prove the conversations and repositories are usable afterward?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A safer migration sequence
&lt;/h2&gt;

&lt;p&gt;A defensible flow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inspect&lt;/strong&gt; the old Mac and create a read-only plan.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Select&lt;/strong&gt; the workspace roots you actually need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect&lt;/strong&gt; the Macs over SSH using a verified host fingerprint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage&lt;/strong&gt; a resumable copy without changing the source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up&lt;/strong&gt; the destination before replacing selected data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install&lt;/strong&gt; only after both Codex instances are closed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify&lt;/strong&gt; conversation content, database integrity, Git state, and file counts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retain&lt;/strong&gt; the old Mac until the new environment has been proven in real use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Wi-Fi, Ethernet, or a working USB-C/Thunderbolt network route can carry the SSH transfer. A cable by itself does not guarantee that macOS has created a usable network connection. Transfer time depends mostly on the amount of data and the actual route.&lt;/p&gt;

&lt;p&gt;An interrupted staging transfer should be resumable. An ambiguous or failed verification should stop the process and leave the old Mac intact—not declare success.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool I built for this
&lt;/h2&gt;

&lt;p&gt;I ran into this while changing Macs, so I built &lt;strong&gt;Codex Migrate&lt;/strong&gt; around the sequence above.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/jsegeren/codex-migrate" rel="noopener noreferrer"&gt;complete CLI and source are MIT licensed and free&lt;/a&gt;. It inventories local Codex state and selected workspaces, excludes the old machine's authentication identity, stages a resumable SSH transfer, requires a verified destination backup, and produces a readable verification report.&lt;/p&gt;

&lt;p&gt;For people who do not want to clone source or work in Terminal, there is also a &lt;a href="https://migrate.segeren.com/#founding-edition" rel="noopener noreferrer"&gt;signed and Apple-notarized Mac beta for $49&lt;/a&gt;. It uses the same engine and adds the packaged app plus personal, best-effort migration and recovery help from me.&lt;/p&gt;

&lt;p&gt;The app is currently for Apple silicon Macs. It is a migration tool, not continuous multi-device sync and not a merge tool for two independently active workspaces. Keep the old Mac and an independent backup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick decision guide
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean repos, everything pushed:&lt;/strong&gt; clone from Git and reinstall your tooling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broad whole-account move:&lt;/strong&gt; consider Apple Migration Assistant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You know the exact state and safety steps:&lt;/strong&gt; manual rsync can work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Codex conversations plus unfinished project state:&lt;/strong&gt; use a staged, backed-up, verified migration process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your Codex history appears empty on the new Mac, stop before deleting anything on the old one. Inventory first; copy second; verify before you trust the result.&lt;/p&gt;




&lt;p&gt;Disclosure: I am the maintainer of Codex Migrate. It is an independent project and is not affiliated with or endorsed by OpenAI.&lt;/p&gt;

</description>
      <category>openai</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
