The internal ones are the trap precisely because the redirects hide them. Everything still resolves, nothing looks broken to a human clicking around, and the cost surfaces much later as drift nobody can attribute to a specific change.
The check worth having is a crawl that flags any internal link resolving through a hop rather than directly, because a 200 after a redirect looks identical to a clean 200 in any report that only records the final status.