Blocks aren't pruned. They are stored in `geth/chaindata/ancient` directory and you can't delete them because your `Geth` is serving this information to other nodes that at any point in time would need to sync just like you.

The only pruning that takes places is State pruning, old state objects are deleted from Merkle Trie as new blocks are added.

The latest addition in space saving implemented in `geth` was transaction unindexing, as a part of 1.10 version. Now old transactions are deleted saving about 40GB of space. This is the default.

So, if any option to save disk would exist, it would be implemented, but currently the space is as optimal as it can be.