Error handling using http.cat and reverse proxy not functioning (or I'm stupid, one of the two)

I think you might need to override the Host header when proxying to it. It likely expects the domain to match. By default, Caddy passes the Host of the original request through.

	handle_errors {
		rewrite * /{http.error.status_code}
		reverse_proxy https://http.cat {
			header_up Host http.cat
		}
	}