Review Agent and "generate commit message" features do not work

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Even when changes are definitely there and Cursor detects them under “Changes”, commit message cannot be generated and agent review cannot be started (with “No content found” message.

Steps to Reproduce

Open any project with git configured
Do changes
Try to generate commit message and/or run review agent

Expected Behavior

Message is generated
Review is executed

Screenshots / Screen Recordings

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.2.44 (Universal)
VSCode Version: 1.105.1
Commit: 20adc1003928b0f1b99305dbaf845656ff81f5d0
Date: 2025-12-24T21:41:47.598Z (1 day ago)
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 25.1.0

For AI issues: which model did you use?

openai 5.2

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hi, thanks for the report. It looks like Cursor can’t correctly detect changes from the git repository, even though they show up in the Changes panel.

Could you share the following info so we can debug this:

  1. Cmd+Shift+P > “Git: Show Git Output”. Do you see any repo-related errors there?
  2. Help > Toggle Developer Tools > Console. Please share a screenshot of any errors that include the word “git”

Also, please try opening the project with a clean profile:

  cursor --user-data-dir=/tmp/cursor-test

Do you have a multi-root workspace or any special git configuration?

  1. Nothing wrong there (and no log attempts when clicking “generate commit message”:
2025-12-26 12:32:19.231 [info] > git status -z -uall [87ms]
2025-12-26 12:48:40.485 [info] > git log --format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%D%n%B -z --shortstat --diff-merges=first-parent -n50 --skip=0 --topo-order --decorate=full --stdin [599ms]
2025-12-26 12:48:40.803 [info] > git check-ignore -v -z --stdin [12ms]
2025-12-26 12:48:42.731 [info] > git check-ignore -v -z --stdin [30ms]
2025-12-26 12:49:02.982 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [35ms]
2025-12-26 12:49:02.984 [info] > git show --textconv HEAD:src/utils/__tests__/subscriptionGuards.expired.test.ts [38ms]
2025-12-26 12:49:03.322 [info] > git blame --root --incremental 17a637d4f5b89ffbd34b4f159694fb5466c55bfa -- src/utils/__tests__/subscriptionGuards.expired.test.ts [105ms]
2025-12-26 12:49:58.190 [info] > git config --get commit.template [7ms]
2025-12-26 12:49:58.203 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) --ignore-case refs/heads/customer-portal refs/remotes/customer-portal [20ms]
2025-12-26 12:49:58.228 [info] > git status -z -uall [24ms]
2025-12-26 12:49:58.238 [info] > git for-each-ref --sort -committerdate --format %(refname)%00%(objectname)%00%(*objectname) [33ms]
2025-12-26 12:49:58.294 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [9ms]
2025-12-26 12:49:58.304 [info] > git show --textconv HEAD:src/utils/__tests__/subscriptionGuards.expired.test.ts [8ms]
2025-12-26 12:50:03.250 [info] > git config --get commit.template [7ms]
2025-12-26 12:50:03.253 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) --ignore-case refs/heads/customer-portal refs/remotes/customer-portal [9ms]
2025-12-26 12:50:03.268 [info] > git for-each-ref --sort -committerdate --format %(refname)%00%(objectname)%00%(*objectname) [14ms]
2025-12-26 12:50:03.273 [info] > git status -z -uall [19ms]
2025-12-26 12:52:02.934 [info] > git config --get commit.template [21ms]
2025-12-26 12:52:02.964 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) --ignore-case refs/heads/customer-portal refs/remotes/customer-portal [50ms]
2025-12-26 12:52:03.023 [info] > git for-each-ref --sort -committerdate --format %(refname)%00%(objectname)%00%(*objectname) [57ms]
2025-12-26 12:52:03.033 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [15ms]
2025-12-26 12:52:03.046 [info] > git status -z -uall [81ms]
2025-12-26 12:52:03.048 [info] > git show --textconv HEAD:src/utils/__tests__/subscriptionGuards.expired.test.ts [14ms]
2025-12-26 12:52:07.188 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [16ms]
2025-12-26 12:52:07.200 [info] > git show --textconv HEAD:src/utils/__tests__/subscriptionGuards.expired.test.ts [10ms]
2025-12-26 12:52:08.066 [info] > git config --get commit.template [10ms]
2025-12-26 12:52:08.072 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) --ignore-case refs/heads/customer-portal refs/remotes/customer-portal [16ms]
2025-12-26 12:52:08.097 [info] > git for-each-ref --sort -committerdate --format %(refname)%00%(objectname)%00%(*objectname) [23ms]
2025-12-26 12:52:08.104 [info] > git status -z -uall [31ms]
2025-12-26 12:52:13.119 [info] > git config --get commit.template [7ms]
2025-12-26 12:52:13.122 [info] > git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track)%00%(upstream:remotename)%00%(upstream:remoteref) --ignore-case refs/heads/customer-portal refs/remotes/customer-portal [9ms]
2025-12-26 12:52:13.137 [info] > git for-each-ref --sort -committerdate --format %(refname)%00%(objectname)%00%(*objectname) [14ms]
2025-12-26 12:52:13.142 [info] > git status -z -uall [19ms]
2025-12-26 12:54:46.191 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [257ms]
2025-12-26 12:56:19.719 [info] > git ls-tree -l HEAD -- src/utils/__tests__/subscriptionGuards.expired.test.ts [385ms]
2025-12-26 12:56:31.884 [info] > git check-ignore -v -z --stdin [85ms]
2025-12-26 12:56:37.229 [info] > git check-ignore -v -z --stdin [75ms]
2025-12-26 12:56:39.039 [info] > git ls-tree -l HEAD -- src/services/portal.service.ts [34ms]
2025-12-26 12:56:39.040 [info] > git show --textconv HEAD:src/services/portal.service.ts [35ms]
2025-12-26 12:56:39.193 [info] > git blame --root --incremental 17a637d4f5b89ffbd34b4f159694fb5466c55bfa -- src/services/portal.service.ts [36ms]
2025-12-26 12:56:39.538 [info] > git check-ignore -v -z --stdin [10ms]
2025-12-26 12:56:41.665 [info] > git ls-tree -l HEAD -- public/locales/de/campaign.json [16ms]
2025-12-26 12:56:41.667 [info] > git show --textconv HEAD:public/locales/de/campaign.json [19ms]
2025-12-26 12:56:41.870 [info] > git blame --root --incremental 17a637d4f5b89ffbd34b4f159694fb5466c55bfa -- public/locales/de/campaign.json [126ms]
2025-12-26 12:56:52.764 [info] > git ls-tree -l HEAD -- public/locales/de/campaign.json [56ms]
2025-12-26 12:57:18.269 [info] > git ls-tree -l HEAD -- public/locales/de/campaign.json [65ms]

2 - something is there! (see screenshot)

Will try opening the project with a clean profile a bit later.

As for multi-root: not in this case, now a single app is being edited. No special git config either (at least I don’t recall changing anything except auth-related things)

1 Like

Opening with clean profile helped.
Should I remove my current profile now?

UPD: ok, its funny: now when running cursor on my profile, features seems to work, for whatever reason.