<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz" -->

---
title: Why I still hand write my commit messages | daily.dev
description: A developer explains why he continues to write his Git commit messages by hand rather than delegating them to an LLM, even while using AI-assisted coding...
canonical: https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Why I still hand write my commit messages | daily.dev
og:description: A developer explains why he continues to write his Git commit messages by hand rather than delegating them to an LLM, even while using AI-assisted coding...
og:url: https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz
og:image: https://api.daily.dev/og/posts/ntrc6Obiz.png
og:image:alt: Why I still hand write my commit messages
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Why I still hand write my commit messages

**[Lobsters](https://daily.dev/sources/lobsters)** · 7 min read · 3 upvotes · 2 comments

## Summary

A developer explains why he continues to write his Git commit messages by hand rather than delegating them to an LLM, even while using AI-assisted coding tools. He argues commit messages should explain 'why' rather than 'what', that writing them forces him to verify his own understanding of a change, and that it establishes personal ownership even over AI-generated code. He experimented with Claude Max and a custom 'skill' trained on his past commits to mimic his writing style, finding the results decent but not quite his voice. He also uses per-commit attribution to flag which parts of a change were AI-assisted, and shares real-world examples of well-written commit messages from the Renovate project.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.jvt.me/posts/2026/08/17/hand-write-commits>

## Questions this post answers

### Should I let AI write my git commit messages or write them myself?

Writing commit messages by hand still has value even when AI can generate them, because the process of writing forces you to verify you actually understand the change and to articulate why it was made, not just what changed. AI-generated messages tend to restate the diff's contents rather than the reasoning, missing context like trade-offs, prerequisites, or bugs being fixed.

_daily.dev surfaces engineering practice discussions like this for developers refining their git workflow habits._

### How can I attribute AI-assisted code changes in git commit messages?

Per-commit attribution for AI usage can be added by using atomic commits, so each commit can specify exactly which parts were AI-assisted and by which model. This approach lets a developer take clear ownership of AI-assisted changes while being transparent about where AI contributed to the code.

_developers weighing AI attribution practices track workflow ideas like this on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 3 discussions and 22 comments across lobsters, hackernews (as of 2026-09-14).

**TL;DR:** Most commenters agree that hand-writing commit messages forces useful reasoning and self-review, though several push back that offloading that reasoning to an LLM is actually the point, and there's debate over whether teams can realistically enforce good commit hygiene.

**Sentiment:** 45% positive · 35% mixed · 20% skeptical

**The case for**

- Writing the message often surfaces mistakes or things worth splitting into separate commits before they reach review.
- Commit messages are valuable as locally-available context that survives outages or decommissioned issue trackers, unlike PR descriptions on hosted platforms.
- Long, careful commit messages force deeper 'why' thinking that improves the change itself, not just its documentation.

**The pushback**

- Enforcing good commit messages across a team is very hard and often seen as a low-priority roadblock, especially under time pressure.
- Some argue offloading the reasoning itself is the actual value proposition of LLMs, not something to resist.
- It's unclear what value a stored commit message adds over just letting an LLM regenerate an explanation from the diff on demand.
- Practical tooling gaps (no way to cache/display LLM-generated messages well, cost of regenerating) undercut the case for LLM-written messages.

**By community**

- lobsters (mixed): Broad support for hand-written, reasoning-revealing commit messages, but with real pushback on team-wide enforceability and a vocal minority arguing offloading reasoning to LLMs is the whole point.
- hackernews (positive): Small thread that mostly agrees with the author, valuing commit messages as an unreviewed space for personal notes and finding AI-written ones overly verbose.

**Hottest debate:** Whether offloading the 'why' reasoning to an LLM undermines the core value of commit messages or is simply the natural next step in delegating cognitive work.

**Open questions**

- How do you get an entire team to consistently value and write good 'why' commit messages without it becoming a resented chore?
- Is there tooling that could support reviewing and refining commit messages the way code changes are reviewed?
- What should be done with commit messages once they get squashed and effectively discarded in history?

**Highlights**

> > Even in the projects I run, I don't enforce this on anyone - I've learned over the years it's not worth it to try and require it - and although I'm happy spending the time doing it, not everyone is as interested. I don't maintain any large open-source projects, nor am I in a strictly management role at my company, so I admit I don't have as much experience here but I would certainly take a stronger stance on this if I was in a position to. Getting an LLM to write code is one thing but offloading the reasoning behind the code and communication of the change is something I really feel like we can't give up or allow to degrade. If we aren't going to code anymore, then what exactly _are_ we going to do, if not take the time to communicate our own ideas with our own voice? Anyone seriously pushing heavy LLM usage in software development loses all credibility if they try to simultaneously say "taste, design, and understanding still matter" while also using LLMs to write. I deeply appreciate Oxide's position [0] on this: > If, however, prose is LLM-generated, this social contract becomes ripped up: a reader cannot assume that the writer understands their ideas because they might not so much have read the product of the LLM that they tasked to write it. If one is lucky, these are LLM hallucinations: obviously wrong and quickly discarded. If one is unlucky, however, it will be a kind of LLM-induced cognitive dissonance: a puzzle in which pieces don’t fit because there is in fact no puzzle at all. This can leave a reader frustrated: why should they spend more time reading prose than the writer spent writing it? [0] https://rfd.shared.oxide.computer/rfd/0576#_llms_as_writers
> — [nickmonad on lobsters · 15 points, 2 comments](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages#c_l1zpkz)

> > Getting an LLM to write code is one thing but offloading the reasoning behind the code and communication of the change is something I really feel like we can't give up or allow to degrade Offloading the reasoning *is* the selling point. The bottleneck for producing software is the time spent reasoning, and building the theory that it takes you to get to understanding.
> — [orib on lobsters · 4 points](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages#c_s9epau)

> I struggle to see the point of writing any commit message if you're not going to hand write it, what are you storing that I couldn't re-deduce with my own LLM? I suppose the LLM could encode notes from your conversation that are only available in its context? Seems like a stretch.
> — [elliotmorris on lobsters · 7 points, 2 comments](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages#c_usqudb)

> In addition to the points in this article, at work I have found that given the terrible GitHub availability story these days, it's incredibly valuable to have meaningful commit messages which can be referred to locally instead of storing all of that valuable information and context primarily in GitHub Pull Request descriptions and just phoning in the commit message body (a trend that is unfortunately way too common)
> — [jeezy on lobsters · 8 points, 1 comments](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages#c_hzjcgc)

> I've just started a new job and wanted to improve my commit messages. Because this is a fresh development I have many tasks like implement a search button, implement i18n translations etc. For me it's really hard to write a commit message explaining why I did this. When I would fix a bug the why (what happend and why does this fix it?) is easier for me to find. Do you maybe have an example feature commit from which I can take inspiration from?
> — [confusedalex on lobsters · 1 points, 1 comments](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages#c_ktw3ge)

**Source threads**

- [lobsters](https://lobste.rs/s/kj1bvt/why_i_still_hand_write_my_commit_messages) · 26 points · 14 comments
- [hackernews](https://news.ycombinator.com/item?id=49337723) · 5 points · 8 comments
- [hackernews](https://news.ycombinator.com/item?id=49368343) · 1 points · 0 comments

## Community discussion

Top comments from developers on daily.dev.

**@stevenb** · 0 upvotes

> This is something I also do so I know I understand the changes and helps me remember past commits

**@jeanne** · 0 upvotes

> Interesting! I do take the time to write commit messages, but not that cleanly (I mean I stick to a few words only, like a title). Though I always prefix with a gitmoji depending on the type of commit (see : [https://gitmoji.dev/](https://gitmoji.dev/)). That helps me to scan quickly the commit history without reading 👌

## Similar posts on daily.dev

- [You’re Not a Better Engineer Because You Type Git Commands by Hand](https://daily.dev/posts/you-re-not-a-better-engineer-because-you-type-git-commands-by-hand-haxbb0ynm) · Hacker News · 3 upvotes · 0 comments
- [Please keep code descriptions simple](https://daily.dev/posts/please-keep-code-descriptions-simple-yyyx93e94) · Lobsters · 22 upvotes · 2 comments

---

Tags: [#git](https://daily.dev/tags/git), [#vibe-coding](https://daily.dev/tags/vibe-coding)

[View this post on daily.dev](https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Why I still hand write my commit messages","url":"https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz"},"datePublished":"2026-08-19T21:04:27.309Z","dateModified":"2026-09-14T08:07:08.195Z","description":"A developer explains why he continues to write his Git commit messages by hand rather than delegating them to an LLM, even while using AI-assisted coding...","image":"https://media.daily.dev/image/upload/s--foaA6JGU--/f_auto/v1722860399/public/Placeholder%2004","thumbnailUrl":"https://media.daily.dev/image/upload/s--foaA6JGU--/f_auto/v1722860399/public/Placeholder%2004","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":2,"discussionUrl":"https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"git,vibe-coding","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"Why I still hand write my commit messages"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz","comment":[{"@type":"Comment","text":"This is something I also do so I know I understand the changes and helps me remember past commits","datePublished":"2026-08-21T07:49:16.393Z","url":"https://daily.dev/posts/ntrc6Obiz#c-WrpMVX5FU","author":{"@type":"Person","name":"Steven Burrows","url":"https://daily.dev/stevenb","image":"https://media.daily.dev/image/upload/s--J8fVAfGw--/f_auto/v1705434114/avatars/avatar_Ghvs0HorIR1tgho0zgcsY"}},{"@type":"Comment","text":"Interesting! I do take the time to write commit messages, but not that cleanly (I mean I stick to a few words only, like a title). Though I always prefix with a gitmoji depending on the type of commit (see : https://gitmoji.dev/). That helps me to scan quickly the commit history without reading 👌","datePublished":"2026-08-21T11:41:46.800Z","url":"https://daily.dev/posts/ntrc6Obiz#c-6n7tV32lW","author":{"@type":"Person","name":"Jeanne Auvray","url":"https://daily.dev/jeanne","image":"https://media.daily.dev/image/upload/s--O0TOmw4y--/f_auto/v1715772965/public/noProfile"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/why-i-still-hand-write-my-commit-messages-ntrc6obiz#faq","mainEntity":[{"@type":"Question","name":"Should I let AI write my git commit messages or write them myself?","acceptedAnswer":{"@type":"Answer","text":"Writing commit messages by hand still has value even when AI can generate them, because the process of writing forces you to verify you actually understand the change and to articulate why it was made, not just what changed. AI-generated messages tend to restate the diff's contents rather than the reasoning, missing context like trade-offs, prerequisites, or bugs being fixed. daily.dev surfaces engineering practice discussions like this for developers refining their git workflow habits."}},{"@type":"Question","name":"How can I attribute AI-assisted code changes in git commit messages?","acceptedAnswer":{"@type":"Answer","text":"Per-commit attribution for AI usage can be added by using atomic commits, so each commit can specify exactly which parts were AI-assisted and by which model. This approach lets a developer take clear ownership of AI-assisted changes while being transparent about where AI contributed to the code. developers weighing AI attribution practices track workflow ideas like this on daily.dev."}}]}
```

