When I built developer tools at Airbnb, we had the tool show the new things in the changelog the first time you ran it after updating, and we had a subcommand to spit out the whole changelog as you suggest. But I think the general issue is that writing good, useful changelogs is manual work — you shouldn’t show end user something like `git log —-oneline`, which usually ends up pretty noisy and useless no matter what kind of grooming you apply to it. We only put things in the changelog if they affected the workflow of ~all our users, and spamming markdown in the terminal would materially reduce our support burden.
For something like AWS, I guess you could do a changelog per service command? A changelog for the whole thing would be too detailed and contain too much stuff I don’t care about, I’d think.