Reasoning
Works a problem through, and says where the reasoning stops.
In the desktop app you open a folder and it works there: it reads the files, runs the build, reads what came back and fixes what it broke. Not on a copy you pasted into a chat window.
In the desktop app you point at a folder. Nothing outside it is reachable, in any mode.
“The test in OrderServiceTests fails since the last commit.” It reads the file, then the test, then the diff.
Every write is a separate confirmation - or none at all, if you switch that off for a session.

Ask for a page, a widget or a small tool and it runs right next to the answer. Switch to the code, change it in place and see the result at once.
dotnet build and dotnet test, then reads the compiler output instead of guessinggit status, diff, log and blame without asking; commit and push only when you say soIt does not run your application, and it does not touch anything outside the folders you opened. A build that needs credentials, a database or a device will fail here in exactly the way it fails on a machine without them.
The test in OrderServiceTests fails since the last commit. Find out why and fix it, but do not change the test.
Medium for everyday work, Large when the change spans several files and the reasoning has to hold across them.
Compare the sizesNo. It runs the build and the tests, reads what came back and works from that. Starting your application, with its database and its credentials, is not something it does.
Force pushes, hard resets and clean -fd are not available at all - not behind a confirmation, not in any mode. The worst it can do is leave a bad commit you can revert.
Any language for reading and writing. The build and test integration is .NET today; for everything else you get the file, the reasoning and the change, and you run the build yourself.
Works a problem through, and says where the reasoning stops.
Reads what piled up, writes what has to be written.
Explanations that stop where the knowledge stops.