





















You move a repo. Or you fold three repos into a monorepo. Or you rename a top-level folder from ~/dev to ~/projects.
Your filesystem is fine. Git is fine. Your code is fine.
But your AI coding sessions can quietly keep the old absolute path in their metadata, and then everything downstream feels inconsistent:
cwd is staleThis post is about why that happens, why it’s not a moral failing, and how to make it boring again.
cwd Is Part of Your Session StateMost of us treat the current working directory as a boring detail.
AI coding tools don’t get that luxury.
A session isn’t just a chat log. It’s a pile of assumptions. One of the biggest assumptions is: “which directory is this work attached to?”
That “where” shows up in practical places:
When you move folders, the filesystem changes instantly.
But your session metadata doesn’t move with it. It can keep pointing at an absolute path that no longer exists.
In Codex-style local workflows, your sessions typically live in two places:
If you only update one and not the other, you can end up with a weird split-brain situation.
Here’s a toy model of the failure:
JSONL says: cwd=/home/alina/projects/payments
SQLite says: cwd=/home/alina/dev/payments
Depending on which store a specific screen or command is using, you’ll see different “truths”:
Here are a few failure modes that show up in the wild.
You moved a project folder because that’s normal maintenance.
But the session still points at the old path. The UI can detect the folder is gone, and you get stuck with a thread that can’t be relinked.
On Windows/WSL setups, moving the directory a tool started in can turn into repeated “no such file or directory” errors.
Not because you did something exotic.
Because cwd is a live dependency.
Some people expect “resume” to naturally scope to the repo they’re currently in.
Others want a global list.
Either way, it’s clear that cwd is doing real work behind the scenes, and stale values make the whole experience feel arbitrary.
If a session’s cwd disagrees with “the workspace I meant,” you can end up writing patches into the wrong repository.
That’s not a UX nit. That’s a trust problem.
Once you see it, it’s mundane. You have old absolute paths. You have new absolute paths. What you need is (1) a deterministic mapping, (2) validation so you don’t rewrite into nonsense, and (3) an audit trail because trust comes from being able to inspect what changed.
This is the same mental model as migrating a database column. You don’t “just change strings.”
You run a migration with checks.
codecomWe built codecom for one narrow job: safe, local-first Codex session migration after repo/folder moves.
It stays intentionally narrow: migration and discovery, with safety checks and an audit trail.
What it does is intentionally boring:
scan is read-only, and it flags “orphaned” sessions whose cwd path no longer existscwd from a source root to a target rootIf your repos move often, the goal is simple:
Make session portability boring.
F5: refresh (full rescan)F6: move selected sessions (confirmed)Space: toggle selection for a sessionA: select all sessions in the current source folderCtrl+F: conversation searchRepo: https://github.com/apiculallc/codecom
If you want the “I’m not imagining it” version, here are public issues that rhyme with the problems above:
cwd: https://github.com/openai/codex/issues/6730Codex is a product name used by OpenAI. codecom is an independent open-source tool built to help with local session migration workflows.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。