{"slug": "i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective", "title": "I Forgot Which AI Tool Built My Project — So I Investigated Like a Detective", "summary": "A developer building a membership platform for Mugutha FC in Kenya used a forensic search technique to locate a lost project version generated by an AI coding tool. By searching for Vite project fingerprints like package.json and vite.config files modified on a specific date, the developer found the project hidden inside an OpenAI Codex sandbox environment. The method demonstrates how to recover projects when folder names are unknown.", "body_md": "A few days ago I had a small panic moment that I think a lot of developers juggling multiple AI coding tools will recognize.\n\nI'm building a membership and matchday platform for **Mugutha FC**, a community football club in Ruiru, Kenya playing in the Mt. Kenya Regional League. Somewhere in the blur of late-night builds across different AI assistants, I lost track of *where* one specific version of the dashboard actually lived on my machine.\n\nI had a screenshot. I had a vague memory of a localhost URL. That's it.\n\nHere's how I found it — and the small forensic trick that cracked it open.\n\nThe only solid evidence was a screenshot of the dashboard running in my browser:\n\n`127.0.0.1:5173`\n\n`6/25/2026, 12:09 AM`\n\nPort `5173`\n\nwas the first real clue. That's Vite's default dev server port — so whatever this was, it was a React or Vue project scaffolded with Vite, running locally, not deployed anywhere.\n\nBut which folder? I have a habit of spinning up project folders across different AI coding assistants while comparing approaches, and frankly I'd lost track of which tool had generated which version.\n\nThe breakthrough was realizing the timestamp in the screenshot wasn't just a \"nice to have\" — it was a search filter.\n\nWindows has a built-in command called `forfiles`\n\nthat can filter files by modification date. Combined with a recursive search and a keyword filter, I could ask Windows: *\"show me every project file touched on or after this exact date.\"*\n\nFirst attempt — search by filename:\n\n```\nforfiles /P \"C:\\Users\\%USERNAME%\" /S /M *mugutha* /D +0 /C \"cmd /c echo @path @fdate @ftime\" 2>nul\n```\n\nThis searches for any file with \"mugutha\" in the name. It's a reasonable first guess, but it has an obvious flaw — it only works if the *folder itself* was named with \"mugutha\" in it. If an AI tool had scaffolded the project into something generic like `dashboard-app`\n\nor a sandboxed temp folder, this search would find nothing.\n\nSo I pivoted to searching by **what a Vite project actually contains**, rather than what it's named:\n\n```\nforfiles /P \"C:\\Users\" /S /D +06/24/2026 /C \"cmd /c echo @path @fdate @ftime\" 2>nul | findstr /I \"package.json vite.config\"\n```\n\nBreaking that down:\n\n`/P \"C:\\Users\"`\n\n— start the search at the Users directory`/S`\n\n— search recursively, including all subfolders`/D +06/24/2026`\n\n— only files modified `/C \"cmd /c echo @path @fdate @ftime\"`\n\n— for every match, print its full path, date, and time`findstr /I \"package.json vite.config\"`\n\n— pipe the results through a filter that only keeps lines mentioning `package.json`\n\nor `vite.config`\n\n, the two files that exist in basically every Vite project rootThis is the key idea: instead of guessing a project name, I searched for the **fingerprint of the technology** — files that are guaranteed to exist if a Vite project exists, regardless of what anyone called the folder.\n\nThe output was immediately interesting:\n\n```\n\"C:\\Users\\CodexSandboxOffline\\.codex\\.sandbox\\cwd\\c01195b0e0a02dfa\\package.json\" 6/24/2026 8:22:03 PM\n\"C:\\Users\\CodexSandboxOffline\\.codex\\.sandbox\\cwd\\c01195b0e0a02dfa\\node_modules\\.vite\\deps\\package.json\" ...\n\"C:\\Users\\CodexSandboxOffline\\.codex\\.sandbox\\cwd\\c01195b0e0a02dfa\\node_modules\\@vitejs\\plugin-react\\package.json\" ...\n```\n\nAnd there it was. Not in any of my normal project folders. Not in `Desktop\\projects\\Mugutha_MembersClub`\n\n. It was sitting inside a completely separate Windows user profile: ** CodexSandboxOffline**.\n\nThat folder name told me everything. This particular version of the dashboard hadn't been hand-built by me in a normal project directory — it had been generated and run inside an isolated sandbox environment created by **OpenAI Codex**, complete with its own user account, its own `node_modules`\n\n, and a dependency tree showing `@vitejs/plugin-react`\n\n, `lightningcss`\n\n, `rolldown`\n\n, and `lucide-react`\n\n— a modern, fast Vite + React toolchain.\n\nMystery solved. The dashboard in my screenshot wasn't from a different session of the same tool I'd been using elsewhere — it was a different AI assistant entirely, sandboxed in its own corner of the filesystem the whole time.\n\nThe interesting part of this story isn't really about Codex or sandboxes specifically. It's a pattern worth remembering if you work across multiple AI coding tools:\n\n**A screenshot timestamp is a search filter, not just a memory aid.** Once I treated the clock in the corner of my screenshot as a literal date filter for `forfiles`\n\n, the search went from \"guess the folder name\" to \"show me everything touched in this exact window\" — which is a much more reliable way to search.\n\n**Search by what a project contains, not what it's called.** I didn't know the folder name. I did know it had to contain\n\n`package.json`\n\nand likely `vite.config`\n\n. Searching for the signature of the toolchain found it in seconds, in a location I never would have guessed to look — a separate sandboxed Windows user profile I didn't even know existed on my own machine.**Different AI coding assistants can leave very different fingerprints on disk.** Some generate plain project folders in your normal workspace. Others, like Codex's sandbox mode, isolate themselves into entirely separate environments — different user accounts, different `node_modules`\n\n, different everything. If you're switching between tools, it's worth knowing where each one actually puts its files.\n\nIf you're in the same situation — you know roughly *when* something was built but not *where* — here's the general-purpose version:\n\n```\nforfiles /P \"C:\\Users\" /S /D +MM/DD/YYYY /C \"cmd /c echo @path @fdate @ftime\" 2>nul | findstr /I \"package.json vite.config\"\n```\n\nSwap `package.json`\n\nand `vite.config`\n\nfor whatever filename fingerprint matches your stack — `requirements.txt`\n\nfor Python, `Cargo.toml`\n\nfor Rust, `composer.json`\n\nfor PHP. The principle is the same: search for the file that's guaranteed to exist, not the folder name you might have forgotten.\n\nOnce you find a candidate, confirm it before getting too excited:\n\n```\ncd path\\to\\folder\ntype package.json\n```\n\nThat one command tells you the project name, dependencies, and scripts — enough to know immediately whether you've found the right thing.\n\nSmall investigation, but a satisfying one. Sometimes debugging isn't about the code at all — it's about reconstructing your own past actions from whatever digital breadcrumbs you left behind.", "url": "https://wpnews.pro/news/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective", "canonical_source": "https://dev.to/jvicmaina/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective-3ooa", "published_at": "2026-06-30 10:21:05+00:00", "updated_at": "2026-06-30 10:49:12.139199+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "ai-tools"], "entities": ["Mugutha FC", "OpenAI Codex", "Vite", "React", "Windows"], "alternates": {"html": "https://wpnews.pro/news/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective", "markdown": "https://wpnews.pro/news/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective.md", "text": "https://wpnews.pro/news/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective.txt", "jsonld": "https://wpnews.pro/news/i-forgot-which-ai-tool-built-my-project-so-i-investigated-like-a-detective.jsonld"}}