Safe Guards can make checks before and after a Safe transaction.
The check before a transaction can, e.g. programmatically check all of the parameters of the respective transaction prior to execution.
This check after a transaction is called at the very end of the transaction execution and can be used to, e.g. perform checks on the final state of the Safe.
IMPORTANT: Since a Safe Guard has full power to block Safe transaction execution, a broken Guard can cause a denial of service for a Safe. Make sure to audit the Guard code and pay attention to recovery mechanisms.