9 ms·
Claude Code Checkpoints
- radarsat1 1y agoI don't know what this is but isn't git enough? Incidentally I'm not convinced in my day-to-day for "jujitsu" (jj) but from what I understand about how it works, I've been wanting to give it a try for agent-based coding, based on the way it defaults to saving everything and letting you sort it out after. I do like how Aider commits everything so you can easily roll back, although it ends up with a few too many commits imho. I've been wanting to experiment also with getting an agent to go back and rebase history, rewrite commits etc in the context of where the project ended up, to make a more legible history, but I don't know if that's doable, or even all that useful.
- mfenniak 1y agoI don't think jujutsu woild help with this use case -- jujutsu will not save everything because it is not running constantly on your repo. It snapshots the working tree only when you run a `jj` command. Ineffective if an agent is doing work.
- adobrawy 1y agoYou can use Claude hooks ( https://docs.anthropic.com/en/docs/claude-code/hooks#stop-and-subagentstop-input https://docs.anthropic.com/en/docs/claude-code/hooks#stop-an... ) to trigger jj / git automatically.
- ricericerice 1y agoyou can set up the watchman fs monitor to snapshot whenever a file changes on the filesystem, its saved my ass plenty of times
- jtickle 1y agoI recently started using Aider and had that thought about too many commits. What I realized though was: (1) if I'm going to contribute to a project, I should be working in a local branch and interactively rebasing to clean up my history anyway (and of course carefully reviewing Aider's work first) and (2) if I'm working on my own thing WITHOUT LLM, I tend to prefer to commit every dang little change anyway, I just don't remember to do it because I'm in the zone and then inevitably wish I had at some point.
- vlovich123 1y ago> I tend to prefer to commit every dang little change anyway, I just don't remember to do it because I'm in the zone and then inevitably wish I had at some point. That’s what I do too until I developed a practice to break up into thematic commits as I realize I need them. And if I don’t, then I just git reset to the beginning and use git gui to commit lines and chunks that are relevant for a given piece of work. But with experience, I barely do the break down completely - I generally don’t even bother creating commits until I have a starting sense of what the desired commit history should be.
- hoppp 1y agoYea but then you need need to commit each iteration of each file right away, even if its not working. Its fine if you just rebase at the end manually, but not good if you don't, your history will be cluttered and as hard to read as the codebase. Eventually most people who use coding tools will have low knowledge of what is being generated and then they probably never rebase either...
- samtheprogram 1y agoYup, just rebase. I just commit with a “wip!”-prefaced message whenever the LLM pauses and says it’s finished, including new files. You can squash and cleanup later, or revert back to a state before it screwed up. Also doubles as a way to cohesively look at the changes it made without all the natural language and recursive error/type fixing it does while working. I don’t understand why people are making it so complicated. You’re saving a minute per iteration with the LLM, tops, at risk of losing control or introducing hard to find issues. It is the definition of diminishing returns.
- mhast 1y agoGit won't catch new files the agent is adding. To get around that you can of course always add all new files, but then you'll potentially have your repo polluted with a bunch of temporary scratch files instead. You can typically go back and edit git history. But it will require force push and breaking changes. And a few sacrifices to ensure that it doesn't make a mistake because then your repo is potentially broken. Best way to do that is probably to have it work on branches and then squash merge those.
- fluidcruft 1y agoYou could also create a branch, save your intermediates there, and then squash merge when you are ready.
- skapadia 1y agoExactly. This is precisely what I do.
- winter_blue 1y agoYup, that's what I do. Even for personal projects, with the flurry of changes Claude/other AI assistants make, a branch makes it easier for me to compare changes. Often I have a branch with multiple commits on it, with each commit corresponding to a message in a conversation with AI on Cursor trying to get a new feature built. In the end, I can diff the branch against the main branch, and see the sum total of changes the AI agent has made. Maybe edit/improve manually on my own afterwards. And then, merge.
- fprotthetarball 1y ago> Git won't catch new files the agent is adding. Another problem I inadvertently dodged by using Jujutsu with Claude Code :) I tend to send a lone "commit" message to Claude when I think I'm in a spot I may want to return to in the future, in case the current path doesn't work out. Then Claude commits it with a decent message. It knows how to use jj well enough for most things. Then it's really easy to jj new back to a previous change and try again.
- Wowfunhappy 1y agoThis is something I really wish was just built-in to Claude Code. I want it built in because I don't want to have to think about it beforehand. I should be able to jump back in conversation history and have the state of the code jump back with me, so it's restored to the same state it originally was at that point in the conversation. (There does also need to be a way to jump back in the conversation history without reverting the code, there are times that is useful too!)
- kristianp 1y agoThis was a pain point in coming from Aider to CC. How to have diffs of the changes once CC has done the changes? Having git commits done the way Aider does it would have saved me a lot of time.
- CuriouslyC 1y agoYou can prompt claude code to do that, or use hooks. You can run lint/test/commit automatically on agent stop.
- black_knight 1y agoYes, but the convenience of aider’s /undo might take quite some work to replicate.
- block_dagger 1y agoCursor has had this for a long time. One of the reasons I don’t switch away.
- punnerud 1y agoHi, the developer here. Already thinking about a way to add it as a background task that can communicate with multiple instances at once. As long as its part of CLAUDE.md, every new project would have it automatically included. Not part of Claude Code, but a good way closer?
- andrewmutz 1y ago
- emilecantin 1y agoI tend to have auto-accept on for edits, and once Claude is done with a task I'll just use git to review and stage the changes, sometimes commit them when it's a logical spot for it. I wouldn't want to have Claude auto-commit everything it does (because I sometimes revert its changes), nor would I want to YOLO it without any git repo... This seems like a nice tool, but for someone who has a very different workflow.
- punnerud 1y ago"Checkpoints for Claude Code" use git under the hood, but stored in .claudecheckpoints folder, to not mess with your own git. Add itself to .gitignore. It auto commits with a git message for the changes done through MCP locally.
- michaelmior 1y agoAs someone who doesn't use CC, auto-commit seems like it would be the easiest way to manage changes. It's easy enough to revert or edit a commit if I don't like what happened.
- emilecantin 1y agoIt's also very easy to throw away unstaged changes, and to stage exactly what you want. I treat the staging process ("git add") as a code review.
- fastball 1y agoIt's also very easy to throw away actual commits, as long as you don't push them (and even then not so difficult if you're in a context where force-pushing is tolerable).
- emilecantin 1y agoTrue, but it's harder to reject changes in one file, make a quick fix, etc. I like to keep control over my git repo as it's a very useful tool for supervising the AI.
- punnerud 1y agoHi, the developer here. Its a very early version so there could be a lot of bugs, but I like to use it myself (already found several bugs and updated version soon on its way). Switching from Cursor to Claude Code this was the biggest loss. Have tried to improve on the Cursor functionality, with features I missed. I would love any feedback on what you are missing etc
- felixgallo 1y agoAre you aware of trademark law?
- punnerud 1y agoYes, tried to make it clear that this is Checkpoints for Claude Code. An addition to Claude Code.
- felixgallo 1y agoI don't think you succeeded. The product name in the article title is 'Claude Code Checkpoints', and the url is 'claude-checkpoints.com'. Nowhere do you note that Claude is a trademark of Anthropic, or disclaim association with Anthropic, or describe that you obtained permission to use their trademarked name in your product. I personally was confused about whether this was an official product at first. I'd be surprised if Anthropic didn't get peeved about this.
- lucasmullens 1y agoHey, so it's a bit obvious you vibe coded this, which makes me not want to trust it. Some red flags: - The Apple icon is a literal apple and not the Apple logo. - You've got 2 Mac download buttons that do the same thing right at the top, surely one of those is a mistake. - "Watch it in action" is positioned poorly and fails to be a header for the video. Too close to the button above it. - "Automatic version control" is not what a checkpoint is? "Version control" means git to almost everyone. - Privacy link is a fake placeholder. - "See It In Action" looks like you meant to add images and just forgot? - You named this like 5 things. The website title is "Checkpoints for Claude Code", the domain is "Claude Checkpoints", the UI website title is just "Checkpoints" as if its a standalone brand, the contact email link uses "checkpoints-app.com", and finally you call it "Claude Diff" in the App Store description. Oh and the HN submission is a 6th one, "Claude Code Checkpoints". Cool project though, sorry to be so critical.
- endymion-light 1y agoi love the process of AI vibe coding slowly re-inventing the normal structures of software development how long until we start seeing software products for scrum management and t-shirt size estimation for claude code introduce waterfall methodology to the LLM!
- usmanmehmood55 1y agoAnd soon enough it would need a project manager and HR to keep all the agents in line.
- endymion-light 1y agoI hope the future becomes AI b2b sass agents selling b2b sass to other agents, just tools buying tools that in turn buy other tools ad infinitum
- CuriouslyC 1y agoT shirt estimation doesn't make any sense for AI dev, not one bit. They get epic long features done in hours, and all the shirt sizing comes from cases where the agent circles the drain and needs to be guided, which isn't predictable. The shirt sizes now are for manual acceptance testing.
- endymion-light 1y agoMy experience with AI tooling is that while it's really useful and great - I don't think i've ever seen a LLM complete an epic long feature well full stop. Don't get me wrong, it's definitely improved my workflow and efficiency, but you must be winning at roulette if the model is performing well on anything that can't be googled and implemented witihn a similar amount of time. unless it's claude, where even simple styling changes seem to become epics just when it wants to spit out an extra few thousands lines of code
- CuriouslyC 1y agoIf you go back and forth with chatgpt/gemini on architectural details first, then get chatgpt to produce a hyper detailed spec (like, almost a program claude can execute), you can get claude to run for 2-3 hours at a shot (particularly with a hook to prevent early stopping). Require >85% test coverage, and bake very clear e2e test paths into the spec, and Claude can come surprisingly close to one shotting big things.
- pjm331 1y agoNot to trivialize the work being done here but isn’t this as simple as a hook on edit and write tool calls that commits to git? I’m not sure I see the need for a whole app around this vs just the standard git workflow
- Cheer2171 1y agoIf Claude Code LLMs are reportedly so good, then why is the Claude Code CLI such a buggy, messy, featureless disaster? Are they dogfooding?
- heeton 1y agoEesh, a disaster? I use it daily to do some pretty impressive things. Wouldn’t call it a disaster.
- neutronicus 1y agoSome of the user interaction borders on "disaster" IMO. One puts up with it because it's not a show-stopper for the core value proposition of the software (an LLM agent completing tasks for you), and the core value proposition of the software is really valuable. The noticeable issues are (1) unpredictable scrolling of the terminal window and (2) a super-buggy text box for inputting the prompt. In particular if I mash the arrow key too fast while moving around and editing the prompt CC and my terminal's idea of where the cursor is get out of sync somehow and it's tricky to get them re-aligned, and I can't actually input text until I do. The vim mode lets me bypass this but it has its own bugs and is missing a ton of features that I expect. Visual selection in particular seems to be missing? Not entirely certain what things I'm used to are stock vim features vs Spacemacs features but I'm pretty sure visual mode is the former. Regardless, only the very basics seem to actually work. "w", "b", "e", "cw/b/e", "dw/b/e", "esc/i". So for the most part I actually just edit CC prompts in emacs and paste them. I resort to this workaround because I am very motivated to use Claude Code. For a less-useful piece of software I would probably just give up.
- jasonjmcghee 1y agoI've built terminal applications and when not using a dedicated alternate buffer, things like multiline text input and navigation are so easy to screw up. Not to mention when you have to do all the tricks to properly detect key strokes, pastes, etc. It's a mess of printing special codes and carriage returns. I'm guessing they're using abstraction of some sort, but imo they've done a lot of great features and definitely usable. That being said- they could just build / use something more like a jupyter notebook and have a wildly more stable and rich experience. Or a classic tui app, but pros and cons.
- nla 1y agoGit add doesn't work?
- deleted 1y ago[deleted]
- _andrei_ 1y agothis is coming to Claude Code
- aantix 1y agoThey have hinted at it?
- adds68 1y agoGreat idea, but i've set it up and the app is pretty unusable for me, there is some sort of blocking process which runs every few seconds and freezes the UI, so you can interact with it properly
- punnerud 1y agoStrange, tested on MacBook Pro M3, Pro Intel and MacBook Air M1. All with different OS versions. Straight after the MCP connection setup this happens?
- whalesalad 1y agoI want to do this with btrfs subvolumes/snapshots.
- andrewstuart 1y agoDisappointing that Claude’s chat interface is falling so far behind. - no large context - no zipfile uploads - no multi file downloads
- OhNoNotAgain_99 1y ago[dead]
- _1tem 1y agoInteresting to watch the explosion of projects, even whole startups, which are just a feature addition to Claude Code. Shows how beloved it has become.
- idk1 1y agoThis is fantastic, but a very spicy business. All Claude needs to do is add one feature and you've got your whole business nuked from orbit.
- tommyderami 1y agoUnder the hood, is this simply checkpointing the files in the claude target folder or are you also checkpointing the claude context? One of my biggest pain points is after a few compactions/edits to claude.md and all of a sudden Claude has made a few mistakes and all the context window cruft of fixes it attempted and reverted actually seem to confuse it further and it would be nice to reset to a known happy place code & contextually and retry from there.
- BiteCode_dev 1y agoSo basically, "watch jj"
- layer8 1y agoOr you could use something like NILFS2 [0]. It would be nice to be able to just turn such a function on and off per folder. [0] https://docs.kernel.org/filesystems/nilfs2.html https://docs.kernel.org/filesystems/nilfs2.html
- catigula 1y agoI have a strong suspicion that if you need, or feel you need something like this, you're misusing coding agents.
- hashbig 1y agoAm I the only one who is getting tired of all these LLM generated landing pages with their hallmark indigo backgrounds/gradients, unnecessary and tasteless transitions, and meaningless marketing sell points?
- adventured 1y agoI'm not sure what LLM has to do with it. A zillion boilerplate landing pages exist out there regardless and a lot of them look/behave just like that. Copying is copying.
- hashbig 1y agoLLMs are known to overuse purple: https://x.com/adamwathan/status/1953510802159219096 https://x.com/adamwathan/status/1953510802159219096 https://ai-engineering-trend.medium.com/the-mystery-behind-ais-purple-problem-revealed-0234afdb292e https://ai-engineering-trend.medium.com/the-mystery-behind-a...
- paulddraper 1y agoYeah. "LLM" and "Wordpress" is the same.
- maddmann 1y agoYeah definitely feels vibe coded. I am so sick of the overuse of icons.
- faxmeyourcode 1y agoPlus the endless emojis and the cards with images completely missing from the bottom section where you're supposed to "see it in action." It shows a lack of respect for yourself and your potential readers when you build something like this.
- FergusArgyll 1y agoIt might be boring but it's easily understandable - I know where to click, where to look etc. It's kind of a minimalism; it's not pleasing (to me) but it works
- faxmeyourcode 1y agoI just add > always git commit with a one line message to my `~/.claude/CLAUDE.md` file. This has in my experience been enough to get atomic commits after every minor change. I'm probably not the target audience for this though.
- globular-toast 1y agoPeople don't seriously still "lose work" do they? The last time that happened to me was a floppy disk failure in the 90s... Using LLMs doesn't preclude using git and keeping backups like everyone should.
- slavakurilyak 1y agoThis looks well-built, but have you considered using Jujutsu (jj) instead? It elegantly solves the snapshot/checkpoint problem without needing MCP servers or a separate app. With jj, every file change is automatically captured (no manual commits needed), and you can create lightweight "sandbox" revisions for each Claude Code task. When things go wrong, `jj undo` instantly reverts to any previous state. The operation log tracks everything, making it virtually impossible to lose work. The workflow becomes: let Claude Code generate messy experimental code → use `jj squash`/`jj split` to shape clean commits afterward. You get automatic checkpointing plus powerful history manipulation in one tool. I've been using jj with Claude Code for months and it's transformed how I work with coding agents - no fear of breaking things because everything is instantly reversible. The MCP integration seems like added complexity when jj's native capabilities already handle the core problem. For anyone interested in the jj + agent workflow, read my post: https://slavakurilyak.com/posts/use-jujutsu-not-git https://slavakurilyak.com/posts/use-jujutsu-not-git That said, respect for shipping something that solves a real pain point! The UI looks clean and the diff viewer is nice.
- bdangubic 1y agoI dont understand the need for this at all. I use the git. Inside one CC session on average there will be 80-160 commits. I can revert back whatever I want whenever I want. Whenever context gets hairy I clear and ask CC to review specific commits to continue or whatever. I must be missing something here completely what is the need for jj at all…
- earleybird 1y agoPretty much bang on. I do have to remind myself that discipline in commit messages helps future me.
- rubslopes 1y agoClaude Code produces pretty good commit messages, IMO. Just tell it: "commit".
- atleastoptimal 1y agoCoding with LLM’s has taught me that there is value to treating AI produced code as a slot machine, that sometimes produces brilliant work and sometimes causes huge bugs. The best way to use LLM’s is to structure the project to maximize the benefit from the rare brilliances and minimize the risk and hazard of those bugs. Version control has to be treated somewhat like a bonsai, a cycle of growth and pruning with an ultimate framework in mind.
- drewbitt 1y agoSimilar to https://github.com/getAsterisk/gooey https://github.com/getAsterisk/gooey
- MacroStan 1y agoHere's what I do to survive macos updates, random restarts, crashes etc. I had Claude Code to configure all of this: Terminal Setup: - Alacritty as your terminal - tmux as your session manager - Auto-start tmux in Alacritty configuration Key Protection: # Alacritty auto-starts tmux sessions tmux new-session -s main # Creates persistent session # tmux shortcuts (prefix: Ctrl+a) # Sessions persist even if terminal closes Plugins: tmux-resurrect and tmux-continuum plugins to automatically save/restore sessions with a simple "dev" command. The tmux session will survive terminal crashes/closes, so you can reconnect to your Claude session by reopening Alacritty (which auto-attaches)
- zhuravel 1y agoWhy not use `claude --continue`?
- MacroStan 1y agoI've tried claude --resume and it did not work. Also, I have 4 claude windows going on all the time. I do not know how to recreate all 4
- MacroStan 1y agoOk, I take back some of this. Its survived a macos update once. I got all 4 claude windows and their sessions back. However, the next time, it reopened 4 panes but I lost all Claude sessions. I checked out the demo and it looks great. I am guessing it supports 4 concurrent claude sessions? I cannot find this in docs
- thrown-0825 1y agothis is going in the opposite direction. we need to be sandboxing agents, not giving them a bigger surface area to fuck up your repo.
- punnerud 1y agoHi, have been working on that also ;) as a way to have multiple agents working on the same repo. Started with Docker and then switched, because Docker is to slow to spin up (seconds is to slow) and big.
- thrown-0825 1y agojust run it in a vm, claude shouldnt be using the same gitconfig as the host user anyways
- troutpanda 1y agoFinally, source control for vibe coders
- zwilliamson 1y agoI dumped MacOS. Would be cool to see this as an app package available on Omarchy.