Closing the Books on Four Months of Workflow with 337MB of Session Logs
Wrapping up the series — I had Claude analyze four months of Claude Code session records wholesale to see what my workflow really looks like, and learned those records vanish in 30 days under default settings.
Before closing the series, I assigned one last thing. Analyze a little over four months of work records wholesale and close the books on my workflow.
What I set out to do: close the books on records, not gut feeling
What started with an idea debate on Apr 9 had somehow become 12 active projects. Four live services and one trading bot — up and running, but no clear results yet. As I closed the series I wanted to write up “how am I using Claude Code,” but writing from memory would obviously be flattering.
Fortunately Claude Code leaves every session locally as JSONL. Opening ~/.claude/projects/ showed 362 sessions, 337MB piled up. So I asked it straight — read every record of you working with me, and analyze how I use you. This post is itself a product of the workflow it describes.
How I asked: auditing its own records with ten agents
I launched 10 agents in parallel and had them split up the session logs, global settings, and each project’s docs. When agents’ conclusions conflicted, instead of reconciling in words, I had them connect to the DB directly and settle it with actual data. From the largest project’s session logs I separately extracted the 386 prompts I had typed and ran length and pattern statistics.
Where it broke: April through June is entirely missing
The first wall was the analysis target itself. All 337MB were records from Jul 5 onward. Claude Code auto-cleans old session logs by default (cleanupPeriodDays, default 30). The raw conversations from April through June, covering the first half of the series, were already gone.
Instead, I stitched together what remained. Separate from the session logs, a prompt history file survives, and it held 379 utterances from the deleted four months with timestamps. Cross-referencing those with each repo’s git log and docs roughly restores “when I asked for what and what the result was.” With no reply text, the “why was it decided that way” was filled in by documents — only projects that kept ADRs and docs could be restored, and the stretches that didn’t were left as holes.
Result: three things the numbers confirmed
There are only two kinds of prompts. The median of 386 was 49 characters, 65% under 100 characters, yet the longest was 22,206 characters. There’s no middle. The long ones are used exactly once, at the kickoff of a new phase, and reading them closely, they aren’t instructions but gate installation. Stop at every stage for approval, no next stage without measured data.
“This is the design stage. Do not write a single line of implementation code. Do not finalize an implementation plan until the design has my approval.”
After that, I just drive. “Yes, go ahead” and its variants: 113 times. Approvals passing through gates and delegations made up most of the conversation.
Knowledge was split into three layers. The global CLAUDE.md holds only behavioral philosophy — don’t build more than asked, confirm before destructive work. Objective knowledge all goes to repo docs, and when code changes, the docs change in the same branch. Memory keeps only 5–15 micro-preferences that are mine alone. The test is one question. Does someone else need it → repo. Will it go stale soon → todo or git history. Only if neither does it go to memory.
Trust comes from structure. Of 94 valid sessions, 67 were not opened by a human but were headless sessions the trading bot’s scheduler opened with claude -p. Being able to run without a human isn’t because the prompts were well written.
“Prove that the principle ‘the LLM cannot generate orders’ is enforced at the code-path level, not the prompt level.”
Whatever judgment the LLM makes, there is no code path that would create an order object, and when a call fails, the default is rejection, not approval. The more I delegated, the more the basis for trust had to move down from prompts into structure.
Lessons
- What you hand to AI is execution, not decisions. Keep decisions as gates and delegate everything between the gates wholesale — 113 “yes, go ahead”s are the evidence.
- Trust comes from structure, not prompts. Enforce important invariants through code paths, and always put the failure default on the safe side.
- Once knowledge has a fixed address, sessions become disposable. Philosophy in global settings, facts in repo docs, preferences in memory. Lose a session and you lose nothing.
- Records are an asset, and the default settings erase that asset in 30 days. If you intend to keep them, raise
cleanupPeriodDaysinsettings.jsonahead of time. I set it to 3650. Already-deleted stretches can be partially restored by cross-referencing prompt history + git log + docs. - Session logs keep tokens and connection details you pasted during work in plaintext. If you’re going to quote them anywhere, mask first. Every quote in this series went through that screening.