Skip to content

Commit panel bypasses the commit-msg hook (not just prepare-commit-msg) #60412

Description

@dnbkr

Reproduction steps

Committing via Zed's built-in Git panel does not run the repository's commit-msg hook. A commit that a failing commit-msg hook should reject is created successfully through Zed's UI, while the same commit message correctly fails when run with git commit from a regular terminal.

This is related to #27232 (which covers prepare-commit-msg being skipped because Zed passes the commit message as a string instead of invoking git with itself as $EDITOR), but this report is specifically about commit-msg — a hook that runs after the message is finalized and shouldn't depend on an editor being invoked at all. Zed's own docs and discussion #47124 indicate pre-commit is expected to run through the UI and can block a commit, so commit-msg silently not running looks like a separate bug rather than expected behavior.

  1. In a git repo, configure hooks via husky (core.hooksPath pointing at a husky-managed directory) with a commit-msg hook that always rejects, e.g.:

.husky/commit-msg

echo "rejected" >&2
exit 1
2. Stage a file change.
3. Commit via a regular terminal (git commit -m "test") — confirm this is correctly rejected and no commit is created.
4. Commit the same change and message via Zed's Git panel (stage the file, enter the commit message, click Commit).

Current vs. Expected behavior

Expected behavior: Step 4 should fail the same way as step 3.

Actual behavior: Step 4 succeeds — a commit is created despite the hook being configured to always reject.

Zed version and system specs

Zed: v1.9.0+stable.316.ced90fc636c4ede05402befc38a63bae7fd741bd (Zed)
OS: macOS 26.5.1
Memory: 24 GiB
Architecture: aarch64

Attach Zed log file

there's nothing relevant in the zed log file I could find; the only output when committing is:

2026-07-05T00:12:29+01:00 INFO [zed::reliability] memory usage: resident 273 MiB (-10 MiB), virtual 485215 MiB
2026-07-05T04:34:21+01:00 INFO [zed::reliability] memory usage: resident 273 MiB (+0 MiB), virtual 485215 MiB
2026-07-05T08:09:47+01:00 INFO [zed::reliability] memory usage: resident 294 MiB (+20 MiB), virtual 485282 MiB

Relevant Zed settings

"git": {
"inline_blame": { "enabled": false },
},

Relevant Keymap

keymap.json

(for AI issues) Model provider details

No response

If you are using WSL on Windows, what flavor of Linux are you using?

None

Metadata

Metadata

Assignees

No one assigned

    Labels

    state:needs triagetriage is not complete: no `area:*` label, or no `priority:*`/`frequency:*` for Bugs/Crashes

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions