A guardrail is a control that prevents or detects a cost decision outside policy: set once and enforced by the platform without anyone stepping in case by case. An approval threshold is the counterpart for the cases no guardrail can decide: a change above a certain size needs a named person's sign-off before it happens. Together they decide which cost can arise unwanted, and how long it stays unnoticed.
How it works
Preventive guardrails sit at the provider's organisation level and act before a resource exists. Detective guardrails, budgets with alerts and anomaly detection, act afterwards, on billing data that arrives with a delay. The providers' mechanisms differ in reach and in side effects.
AWS
Service control policies in AWS Organizations cap the permissions of every IAM user and role in member accounts. They grant nothing themselves but limit what an identity may do regardless of its own policies, which denies services and regions for whole organisational units. They do not affect the management account or service-linked roles, and AWS advises testing a new SCP before attaching it at the root. Service Quotas are the per-account or per-region ceilings AWS sets per service; an increase has to be requested, so the defaults brake accidental scale. AWS Budgets can run an action at a threshold, automatically or after manual approval: apply an IAM policy or an SCP, or stop specific EC2 and RDS instances in the same account. Tag policies standardise tag keys and values across the organisation and can prevent non-compliant tagging operations on selected resource types; untagged resources are not evaluated.
Azure
Azure Policy compares resources against business rules and is assigned to management groups, subscriptions or resource groups, with everything beneath inheriting the assignment. The policy's effect decides what happens on a violation: deny rejects the request, audit logs it, modify adds a missing tag. Microsoft ships built-in definitions for allowed locations, allowed virtual machine SKUs, allowed resource types and a required tag, and recommends starting with audit before switching to deny, because an enforcing effect can also hinder automation such as autoscaling. Azure budgets stop nothing by themselves; Microsoft states that resources are not affected and consumption is not stopped. A budget at subscription or resource group scope can trigger an action group, though, and Microsoft documents a scenario in which a runbook stops optional VMs at 80 percent of the budget and every VM at 100 percent.
Google Cloud
Organisation policies in Google Cloud apply to an organisation, folder or project and inherit downwards. The resource locations constraint decides where new resources may be created, with value groups such as in:eu-locations; existing resources are untouched, and global resources are exempt. The service usage restriction works with an allow or deny list and takes dependent services with it: restricting Compute Engine also restricts Kubernetes Engine. Quotas apply per project, and a quota override below the default is the documented way to cap usage. Budgets notify by email or through a Pub/Sub topic that a Cloud Run function can act on. Google documents disabling a project's billing as one reaction and warns in the same guide that it shuts down every service in the project, that resources may be irretrievably deleted and that recovery is not assured; given the delay between usage and notification, it does not ensure the budget is kept either. A spend cap budget goes further for one project and one supported service: once the cap is passed, new usage of that service is paused until the next period or until someone lifts the cap, as cloud budgets describes.
What usually needs an approval: a commitment purchase, a new region, a new account, subscription or project, a planned change above a share of the scope's budget, and an enterprise agreement. Who approves follows the role: the cost owner up to their budget, finance for commitments, management for new scopes. The threshold is set relative to the scope's budget, never as a company-wide number, because the same amount is routine for a platform team and half a year's budget for a product team. The approval is recorded where someone will look for it later: a ticket, a change record or a note on the savings opportunity, with date, name and amount.
What it means for your cost
A preventive guardrail never appears on the invoice; its value is the line item that does not arise. It shows in the billing data only indirectly: a region restriction as a region column with only allowed values, a tag policy as allocation coverage that holds when a new team starts. A detective guardrail appears as a difference: between the budget and the amount at which the alert came, and between the alert and the moment someone acted. Google notes that budgets rest on estimated data which can change until the invoice is final, and that delay is part of the difference.
Approval thresholds show in the cost report as steps with a name. A commitment bought with approval has a date and a signatory; a step without one has a cause that is only found at the monthly review. The smaller the scope, the closer the threshold sits to the individual change, and the more it matters that it moves with the budget.
Where it goes wrong
- A guardrail that blocks delivery and gets removed. A
denypolicy on a region a team needs for a customer is switched off after the third incident instead of getting an exception, and then no rule applies at all. Microsoft's advice to start withauditand AWS' advice to test an SCP on a small organisational unit exist for this case. - Approvals nobody can find later. The commitment was approved in a chat that is now archived, and at the monthly review nobody remembers who chose the term. An approval not attached to the ticket, the change record or the savings opportunity is no approval by the next review.
- Thresholds set once and never revisited. The budget has tripled, the threshold has not; now every routine change needs a signature that becomes a formality. A threshold set as a share of the budget moves with it.
- A budget action that stops production. An instance stop action or a runbook that halts every VM does not tell a test environment from production, and disabling billing in Google Cloud ends every service in the project. Microsoft documents its scenario for a non-critical workload; everything else gets a notification, not an action.
- Policies written for a large company applied to five engineers. Four approval tiers, a management group hierarchy and an exception process for a team that agrees things at one table; the policy is bypassed and the bypass becomes the rule. The roles a small company actually has to fill are few; the thresholds should be as few.
Sources
Read on 2026-10-15. AWS service control policies, What is Service Quotas?, configuring budget actions and tag policies; Microsoft overview of Azure Policy, create and manage budgets and Manage costs with Azure budgets; Google Cloud restrict resource locations, restrict resource service usage, View and manage quotas, Create budgets and budget alerts, Manage spend cap budgets and disable billing with budget notifications.