how does it differ from just adding guardrails at the framework level?

Guard rails are internal-the agent's operator controls them. Covenants are cryptographic and independently verifiable by a third party. That's the difference.