{"version":"2.1.318","anchor":"diff-protocol-nodiffreason","canonical_anchor":"diff-protocol-nodiffreason","heading":"An empty diff now comes with a reason","tier":"notice","area":"Diffs","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318\/e\/diff-protocol-nodiffreason","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.318","markdown":"### An empty diff now comes with a reason\n\nWhen no diff can be shown, Claude Code now says why, such as no repository, a busy repository or a failed diff\n\n**What**\n\nA diff is the list of changes to your files. When Claude Code cannot produce one, it now gives a reason instead of returning nothing. The reasons are:\n\n- `no-repository`\n\n- `repository-refused`\n\n- `repository-busy`\n\n- `diff-failed`\n\n- `root-moved`\n\nThere is also a check, on a self-hosted path, that compares new untracked files against ignore rules before listing them as added.\n\n**Why**\n\nApps that show Claude Code's changes can explain why `\/diff` is empty instead of showing a blank result.\n\n- Area: Diffs\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}