<?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>Access Codex from another machine: Remote, SSH, or migration?</title>
      <dc:creator>Joshua Segeren</dc:creator>
      <pubDate>Fri, 11 Sep 2026 01:00:46 +0000</pubDate>
      <link>https://dev.to/jsegeren/access-codex-from-another-machine-remote-ssh-or-migration-56mc</link>
      <guid>https://dev.to/jsegeren/access-codex-from-another-machine-remote-ssh-or-migration-56mc</guid>
      <description>&lt;p&gt;"Use Codex from another machine" sounds like one problem. It is actually four different workflows, and choosing the wrong one can create duplicated state or a broken destination.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Control the current host from a phone
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;Codex Remote&lt;/strong&gt; when Codex should keep running on the original computer and you want to supervise it from another authorized device. The host must remain awake, online, and running Codex.&lt;/p&gt;

&lt;p&gt;OpenAI's current documentation: &lt;a href="https://developers.openai.com/codex/remote-connections" rel="noopener noreferrer"&gt;Remote connections&lt;/a&gt; and &lt;a href="https://openai.com/index/work-with-codex-from-anywhere/" rel="noopener noreferrer"&gt;Work with Codex from anywhere&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Use a project that stays on another Mac
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;Remote SSH&lt;/strong&gt; when your laptop should operate against a project and execution environment that remain on a different Mac. The remote Mac still owns the files, tools, and runtime.&lt;/p&gt;

&lt;p&gt;This is remote access, not a copy and not synchronization.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Replace an old Mac with a new Mac
&lt;/h2&gt;

&lt;p&gt;This is a &lt;strong&gt;migration&lt;/strong&gt;. Signing into the same ChatGPT account does not turn all local Codex state and workspace files into ordinary cloud history.&lt;/p&gt;

&lt;p&gt;A complete move may need to preserve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local conversations and project associations;&lt;/li&gt;
&lt;li&gt;settings, rules, memories, automations, and custom skills;&lt;/li&gt;
&lt;li&gt;selected repositories, including &lt;code&gt;.git&lt;/code&gt;, branches, worktrees, stashes, uncommitted files, and untracked files;&lt;/li&gt;
&lt;li&gt;path relationships between the Codex state and those workspaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid blindly copying all of &lt;code&gt;~/.codex&lt;/code&gt;. Authentication, installation identity, runtime locks, caches, and other machine-specific data should not be cloned onto the destination.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://migrate.segeren.com/" rel="noopener noreferrer"&gt;Codex Migrate&lt;/a&gt; for this Mac-to-Mac case. It inventories the selected scope, transfers directly over SSH, stages and validates the incoming data, verifies a destination rollback backup before replacement, and preserves the new Mac's existing Codex login and installation identity.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/jsegeren/codex-migrate" rel="noopener noreferrer"&gt;CLI and source&lt;/a&gt; are MIT licensed. The signed and Apple-notarized Apple-silicon beta is $50 once, with best-effort support and a 30-day refund policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Work actively on both computers
&lt;/h2&gt;

&lt;p&gt;That is &lt;strong&gt;synchronization&lt;/strong&gt;, not migration. It requires conflict handling for Git state, uncommitted files, sessions, paths, and machine-local configuration. Repeatedly mirroring all of &lt;code&gt;~/.codex&lt;/code&gt; is not a safe substitute.&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you want&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Check the running host from your phone&lt;/td&gt;
&lt;td&gt;Codex Remote&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keep the project on another computer&lt;/td&gt;
&lt;td&gt;Remote SSH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retire the old Mac and continue on the new one&lt;/td&gt;
&lt;td&gt;One-time migration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Work on the same state from two active computers&lt;/td&gt;
&lt;td&gt;A real synchronization system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I wrote a longer, source-linked comparison here: &lt;a href="https://migrate.segeren.com/access-codex-from-another-machine" rel="noopener noreferrer"&gt;Access Codex from another machine&lt;/a&gt;.&lt;/p&gt;

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

</description>
      <category>openai</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Move OpenAI Codex to a New Mac Without Cloning Its Identity</title>
      <dc:creator>Joshua Segeren</dc:creator>
      <pubDate>Fri, 11 Sep 2026 00:02:59 +0000</pubDate>
      <link>https://dev.to/jsegeren/how-to-move-openai-codex-to-a-new-mac-without-cloning-its-identity-35h9</link>
      <guid>https://dev.to/jsegeren/how-to-move-openai-codex-to-a-new-mac-without-cloning-its-identity-35h9</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;Changing Macs is normally straightforward. The surprising part is that signing into the same ChatGPT account does &lt;strong&gt;not&lt;/strong&gt; necessarily recreate the local Codex working environment you had on the old machine.&lt;/p&gt;

&lt;p&gt;Your repositories are only part of that environment. Local Codex conversations and state, project organization, custom skills, settings, Git worktrees, stashes, branches, and unfinished files can still live on the old Mac.&lt;/p&gt;

&lt;p&gt;Here is the safe mental model and checklist I wish I had before my own move.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: decide whether you need migration or sync
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;migration&lt;/strong&gt; is a one-time move from an old Mac to a new Mac. The old environment is the source; the new installation is the destination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sync&lt;/strong&gt; means two Macs keep changing and must reconcile those changes repeatedly. That is a different and much harder problem. Blindly syncing internal Codex databases between two active installations can create conflicts or duplicate machine identity.&lt;/p&gt;

&lt;p&gt;This guide covers migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What usually needs to move
&lt;/h2&gt;

&lt;p&gt;For a complete developer-workspace move, inspect these categories separately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Portable local Codex conversations and working state&lt;/li&gt;
&lt;li&gt;User configuration, rules, memories, automations, and custom skills&lt;/li&gt;
&lt;li&gt;Selected project folders&lt;/li&gt;
&lt;li&gt;Complete Git metadata: .git, local branches, worktrees, stashes, uncommitted files, and untracked files&lt;/li&gt;
&lt;li&gt;Any workspace paths referenced by local Codex state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Git push is valuable, but it does not automatically include uncommitted work, stashes that were never pushed, linked worktrees, local-only branches, or Codex’s local state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you should not clone blindly
&lt;/h2&gt;

&lt;p&gt;Do not treat the entire ~/.codex directory as one portable blob.&lt;/p&gt;

&lt;p&gt;The destination Mac should keep its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codex/ChatGPT authentication&lt;/li&gt;
&lt;li&gt;Installation or device identity&lt;/li&gt;
&lt;li&gt;SSH private keys&lt;/li&gt;
&lt;li&gt;Runtime sockets and locks&lt;/li&gt;
&lt;li&gt;Logs and disposable caches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copying machine-specific identity can make two physical Macs appear to Codex Remote Control as the same installation. Copying credentials also creates avoidable security risk.&lt;/p&gt;

&lt;p&gt;Install ChatGPT/Codex on the new Mac, open it, and sign in once &lt;strong&gt;before&lt;/strong&gt; replacing any portable state. That gives the destination its own authentication and installation identity to preserve.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep the old Mac intact.&lt;/strong&gt; Do not erase, trade in, or repurpose it yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make an independent backup.&lt;/strong&gt; A rollback copy on the destination disk does not protect against disk failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory before copying.&lt;/strong&gt; Find external Git directories, linked worktrees, cloud-only placeholders, symbolic links, permissions issues, and required disk space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect the Macs securely.&lt;/strong&gt; SSH works over ordinary Wi-Fi, a USB-C network connection, or Thunderbolt. Verify the destination host fingerprint; do not disable host-key checking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage first.&lt;/strong&gt; Copy into a separate staging area rather than directly over the live destination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up the destination.&lt;/strong&gt; Verify that backup before replacing selected data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Close Codex writers on both migration accounts.&lt;/strong&gt; Databases and state files should not be changing during finalization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install, then verify.&lt;/strong&gt; Check restored conversations, Codex identity, Git status, worktrees, branches, stashes, and representative projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan for interruption.&lt;/strong&gt; A cable disconnect, Wi-Fi loss, sleep, crash, or full disk should leave a resumable staged copy—not a half-replaced live workspace.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Verification matters more than “copy completed”
&lt;/h2&gt;

&lt;p&gt;After the move, check at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The new Mac is still signed into the intended ChatGPT account&lt;/li&gt;
&lt;li&gt;Its Codex installation identity is distinct from the old Mac&lt;/li&gt;
&lt;li&gt;Expected active and archived conversations appear&lt;/li&gt;
&lt;li&gt;Selected projects open at the intended paths&lt;/li&gt;
&lt;li&gt;git status matches the source for representative repositories&lt;/li&gt;
&lt;li&gt;Local branches, stashes, and linked worktrees are present&lt;/li&gt;
&lt;li&gt;Uncommitted and untracked files exist&lt;/li&gt;
&lt;li&gt;A real build or test runs on the new Mac&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only then should you consider the migration complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  The guided option I built
&lt;/h2&gt;

&lt;p&gt;I ran into this problem myself, so I built &lt;strong&gt;Codex Migrate&lt;/strong&gt; for this specific one-time Mac-to-Mac workflow.&lt;/p&gt;

&lt;p&gt;It transfers portable Codex state and selected workspaces directly between your Macs over SSH. It inventories dependencies, stages the transfer, preserves the destination Mac’s authentication and installation identity, requires a verified destination backup before replacement, and supports pause/resume and recovery after interruption.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jsegeren/codex-migrate" rel="noopener noreferrer"&gt;Free MIT-licensed CLI and source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://migrate.segeren.com/" rel="noopener noreferrer"&gt;Signed and Apple-notarized Apple-silicon beta&lt;/a&gt; — $50 once, with direct best-effort support and a 30-day refund policy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The paid app and free CLI use the same migration engine and safety checks. Payment covers the packaged, signed workflow and maintainer support—not stronger data protection.&lt;/p&gt;

&lt;p&gt;Codex Migrate is an independent project. It is not affiliated with, supported by, or endorsed by OpenAI. Keep your old Mac and an independent backup until you have verified the result.&lt;/p&gt;

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