Safe Cloud Cost Automation: Approvals, Autopilot & Security
Teams hesitate to automate cloud savings because automation failures are famous. Here is what those failures teach, how provider trust models and encryption work, and how Varcio gates every change.
By Lana Steiner
18 min read

In this article
- Forty-five minutes
- Why teams stop at dashboards
- Four incidents, four lessons
- Blast radius and change management
- Dry run, rollback and the plan-before-apply habit
- Policy as code
- Least privilege and the confused deputy
- AWS: AssumeRole, external IDs and the confused deputy
- Azure, Google Cloud and OCI: more variation, more stored secrets
- Envelope encryption, explained
- Audit logging that survives a bad day
- How the Varcio pipeline fits together
- Autopilot: automation inside guardrails
- Compliance mapping: what it is and what it is not
- What SOC 2 is and is not
- The other frameworks, briefly
- A due-diligence checklist for any automation vendor
- A staged adoption plan
- Honest limits
Forty-five minutes
On 1 August 2012, a US trading firm called Knight Capital deployed new software to its order router. According to the SEC's announcement of its enforcement action, the router sent more than 4 million orders into the market in the first 45 minutes after the open while trying to fill just 212 customer orders. The firm bought several billion dollars of unwanted positions and ended up with a loss of more than $460 million, per the SEC order. Knight's own filing at the time put the realised pre-tax loss at about $440 million, so even the headline number depends on whose accounting you read. The SEC's charge was that Knight lacked adequate controls for code deployment and testing.
Nothing in that story is about cloud costs. It is about why people hesitate to give software the power to act: machinery that runs flawlessly 10,000 times can, once, do enormous damage at machine speed. The hesitation is rational. This article covers what past failures teach, what a safe automation pipeline contains, how cloud trust models and encryption work, and what compliance mappings do and do not prove. It uses Varcio as the worked example because it publishes concrete design claims, and it leaves the AI-assistant side to our guide on Apex and AI safety.
Why teams stop at dashboards
The cost of hesitation is also real. Flexera's 2026 State of the Cloud report estimates 29% of cloud spend is wasted, up from 27% in 2025, the first rise in five years. Waste persists partly because findings pile up in a queue nobody trusts enough to act on. Finding an unattached volume is a script. Deleting it at 3pm on a Thursday, when you cannot be sure it is not a forgotten database's only copy, is a decision.
The result is dashboards full of recommendations and a backlog nobody trusts.
Four incidents, four lessons
We have kept the details to what primary sources or consistent reporting support.
| Incident | What happened | The lesson for automation |
|---|---|---|
| Knight Capital, 2012 | A deployment problem led a router to flood the market; the SEC found inadequate controls for deployment and testing | Have an automatic circuit breaker and a defined limit on actions, not just humans watching |
| AWS S3 outage, 2017 | An authorised engineer debugging a billing subsystem entered a command input incorrectly and removed more servers than intended | Authorised does not mean safe. Tools should refuse to remove capacity below a minimum and remove it slowly |
| GitLab database incident, 2017 | An engineer removed data from the primary database server while trying to fix replication; GitLab's postmortem found the intended backup was not usable | A rollback you have not tested is not a rollback |
| Replit agent, 2025 | An AI coding agent deleted a live production database during a code freeze, according to the SaaStr founder, and then misreported what had happened | Instructions are not controls. Enforce separation of environments and approval in code |
Caveats: after the S3 outage, reporting says AWS added safeguards so capacity is removed more slowly and cannot fall below a minimum. GitLab accounts differ on details such as the exact command, so read the postmortem before quoting figures. The Replit facts rest largely on the user's account and the company's public response, and reports differ on whether a rollback worked, so treat it as a widely reported example, not a forensic finding.
Four design rules fall out of the set:
- Limit reach per action and per period. A cap on actions per run and per month bounds the worst case.
- Make the safe action the default. Dry-run first; destructive second.
- Separate who proposes from who approves, and never let the proposer approve itself.
- Test recovery, because automation increases the speed at which an untested backup becomes a discovery.
Blast radius and change management
"Blast radius" is how much can break if an action goes wrong. Changing a tag on one dev instance has a small blast radius; stopping a database that three services read has a large one. Mature change management treats the two differently, with lightweight approval for the first and review, windows and rollback plans for the second.
For FinOps remediation, a usable blast-radius assessment asks five questions before any write: what depends on this resource, how reversible the action is (stopping an instance is reversible; deleting a volume without a snapshot is not), whether it looks like production (names, tags, traffic and exposure are signals, none perfect), whether it is protected (deletion protection or a "do not touch" tag should be a hard stop), and whether now is a safe time.
The FinOps Foundation's framework, as Microsoft's documentation summarises it, splits the lifecycle into Inform, Optimize and Operate, and describes Operate as defining and tracking KPIs and governance policies. The practical reading is that governance is a phase of FinOps, not an obstacle to it. Policies that bound what automation can do are part of operating the practice.
Dry run, rollback and the plan-before-apply habit
Infrastructure engineers already know the best pattern for safe change: show the effect first. Terraform's plan command builds an execution plan so you can check that proposed changes match expectations before applying them, and a saved plan applied later will fail if the state has changed in the meantime, which prevents applying a stale plan.
Cost remediation needs the same two properties. A dry run says what would happen, with the same code path and no side effect. A rollback says how to undo it if reality disagrees. The stale-plan lesson matters too: an approval granted on Monday for a resource that changed on Tuesday should not silently execute on Wednesday.
Varcio's published design puts both into the pipeline. Every live change passes policy evaluation and rollout-safety gates: step-up approval for high blast-radius changes, a rollback success floor and a maintenance window for larger changes. If a gate is not met, the run drops to a dry run rather than executing. Supported changes can be rolled back, per-rule dry-run is available, and the approvals queue shows savings at stake, blast radius, rollback and policy reasons. "Supported" is the operative word: not every action is reversible, which is why the risky ones need a human.
Policy as code
Policies in a wiki are advice; policies evaluated in a pipeline are controls. Open Policy Agent, a CNCF graduated project, popularised the idea of decoupling the policy decision from the code that enforces it: applications ask for a verdict and act on the reply, and the policy lives in a versioned, testable artifact.
The same shape works for cost governance. Varcio's policy engine covers required tags, blocked resource types, and cost or risk thresholds, in advisory or blocking mode. Its Policies module lets you build or write guardrails in CEL (the Common Expression Language), test them, roll them out and see what they catch, and apply them to infrastructure pull requests as well as running cloud. The GitHub App comments on Terraform changes with a monthly cost delta, risk score, policy result and budget impact before anything is created, which turns an expensive mistake into a diff to reject.
Start policies in advisory mode, watch what they would have blocked, and give every blocking policy an owner and an exception path, or people will route around it.
Least privilege and the confused deputy
A cost platform needs read access to billing and inventory, and write access only if you enable remediation. Everything about credential design is about minimising what a compromise or mistake can reach, and about not handing a vendor a long-lived secret if there is a better way.
AWS: AssumeRole, external IDs and the confused deputy
AWS's model is cross-account role assumption. You create an IAM role in your account that trusts the vendor's account; the vendor requests short-lived credentials for it. No access key lives in the vendor's database.
The subtle risk is the confused deputy problem, which AWS defines as an entity without permission coercing a more-privileged entity to act. In the third-party case: a vendor with a role in thousands of customer accounts could be tricked by a malicious customer into using that access against someone else's account, if the only thing needed is the victim's role ARN. The countermeasure is the external ID, a value the vendor includes when assuming the role and that your trust policy requires.
AWS's guidance on third-party access has several details worth knowing:
- The external ID is not a secret, and anyone who can view the role can see it. Its job is to prove a request is on behalf of the right customer, not to authenticate.
- The vendor should use a different external ID for each customer account, generate it themselves, and not let customers choose it.
- It should be random (a UUID, say), not guessable like an account number.
- A role with the external-ID condition cannot be assumed from the console unless another statement allows it.
Varcio says AWS uses IAM AssumeRole with an external ID and no stored static keys, and that execution uses a separate role with its own external ID, so you can keep the monitoring role read-only until you enable remediation.
Azure, Google Cloud and OCI: more variation, more stored secrets
The other three clouds differ, and here the trade-offs are less comfortable. Varcio connects them with an encrypted Azure service principal, an encrypted Google Cloud service account key and an encrypted OCI API signing key. That is a stored credential in each case, which is why the encryption section below matters.
| Provider | Varcio's method | What the provider's own guidance says |
|---|---|---|
| AWS | IAM AssumeRole with external ID | Short-lived credentials via role assumption; external ID guards against confused deputy |
| Azure | Encrypted service principal | Microsoft recommends managed identities for Azure-hosted services, service principals where they cannot be used (such as services outside Azure), and prefers certificates over client secrets |
| Google Cloud | Encrypted service account key; short-lived tokens minted per call | Google says to avoid user-managed keys wherever possible, because a stolen key lets an attacker mint tokens and keep access |
| OCI | Encrypted API signing key | OCI API signing keys are per-user RSA credentials, limited to three per user; instance principals avoid stored keys but apply to calls made from OCI compute |
Google's documentation treats keys as an exception, recommending alternatives such as workload identity federation (an external credential exchanged for a short-lived token) and impersonation. A third-party SaaS reaching into your project is the awkward case where a service account key is the pragmatic choice, but it has a cost. Varcio's mitigation is to mint short-lived access tokens per call from the encrypted key and never expose the key in logs or payloads. You can add your own: keep the service account read-only until you need otherwise.
The credential method is a risk you should be able to see and price. Ask any vendor which of your clouds require a long-lived secret to be stored, where, and encrypted how.
Envelope encryption, explained
Where credentials must be stored, Varcio says they use AWS KMS envelope encryption: each record gets its own AES-256 data key and the content is sealed with Fernet, with zero plaintext persistence.
Envelope encryption exists because of a practical constraint. AWS KMS's Encrypt operation handles at most 4,096 bytes of plaintext for a symmetric key, so you do not send bulk data to KMS. Instead, per AWS's GenerateDataKey documentation, you ask KMS for a data key, use the plaintext key to encrypt your data locally, erase the plaintext key from memory, and store the encrypted copy of the key beside the ciphertext. To read the data later you ask KMS to decrypt the key, which requires permission on the KMS key, then decrypt locally.
That buys a choke point (decrypting requires calling KMS, which can be permissioned and logged separately from the database), a small blast radius per record, and ciphertext-only value from a stolen database dump. It does not protect you if the application is compromised while authorised to call KMS. It narrows the damage from stolen storage; it is not a substitute for least privilege and monitoring. Varcio's own breach posture is consistent: the blast radius is limited to the data and write permissions you have granted.
Audit logging that survives a bad day
An audit log is only useful if it is complete, attributable and hard to alter. Varcio logs every action, decision and data access with actor, timestamp, payload and outcome, and says logs cannot be modified or deleted. Its FAQ adds that the log records actions by a user, by Apex, by Autopilot or by a scheduled job, which matters because automated actors need to be as visible as human ones. Elsewhere Varcio describes the activity trail as tamper-evident; if immutability versus tamper-evidence is a procurement question for you, ask which properties are guaranteed and how you can verify them.
Outbound event webhooks are signed with HMAC-SHA256 per-subscription secrets, so a receiving system can verify an event really came from the platform. A good log answers four questions for every change: who or what asked, who approved, exactly what ran, and what happened.
How the Varcio pipeline fits together
Putting the pieces together, a Varcio change travels through the following stages:
- Detect. One of 316 detectors raises a costed finding with savings, confidence, effort and risk.
- Evaluate. Policies and a blast-radius assessment run against the proposed change.
- Approve. A named approver confirms from the dashboard, Slack, Microsoft Teams or the Apex assistant. Reviewers can use
/finops pendingto list requests and approve or reject inline. - Execute. The change runs with rollout-safety gates, dry-run and rollback support, and protected-tag exclusion.
- Record. An immutable audit entry stores actor, timestamp, payload and outcome.
- Prove. Realised savings are verified against real subsequent spend.
Write permissions are verified separately from read permissions (a separate execution role on AWS; separate checks on the same credential for Azure, Google Cloud and OCI), and access inside the platform uses two independent server-side layers, page-level and action-level.
Autopilot: automation inside guardrails
Autopilot is optional and works in three modes:
| Mode | Behaviour |
|---|---|
| Observe | Watches and reports what it would do |
| Suggest | Proposes actions for you to approve |
| Autopilot | Acts without a person above a confidence threshold, inside your rules |
In autopilot mode it can delete low-risk items such as unattached volumes and orphaned snapshots. Resources that look production-like, public, critical or deletion-protected go to approval instead, resources tagged as protected are never touched, and a monthly action budget plus per-rule dry-run and a maximum number of actions per run cap the total. Autopilot is included from the Business plan upwards.
Against the four design rules, that is limited reach (action caps), a safe default (dry run when a gate is unmet) and an audit entry per action. It does not remove the need to choose thresholds carefully: a confidence threshold set too low quietly reintroduces the risk, so begin in suggest mode and promote rules one at a time.
Varcio's separate Workforce product, a rota of AI agent seats, follows a stricter model: out of the box no team can change anything, and no seat of any grade can approve a change into execution. A proposal becomes an ordinary approval request that a person decides.
Compliance mapping: what it is and what it is not
This is the section where vendors blur lines, so it is worth being precise. Varcio's Compliance module maps findings to controls in eight frameworks: CIS AWS, CIS Azure, CIS Google Cloud, SOC 2, PCI DSS v4.0, ISO 27001:2022, NIST 800-53 Rev. 5 and Cloud Well-Architected, with evidence export. Varcio states plainly that mapping is not certification and that its own formal certification is in progress.
That sentence deserves unpacking, framework by framework.
| Framework | What it actually is | How you "pass" it | What a findings-to-control mapping gives you |
|---|---|---|---|
| SOC 2 | AICPA Trust Services Criteria, examined by a licensed CPA firm | An auditor's attestation report (Type 1 or Type 2); there is no SOC 2 certificate | Evidence leads for your own audit, not the report itself |
| ISO/IEC 27001:2022 | A standard for an information security management system, with 93 Annex A controls in four themes | Certification by an accredited body | A way to see which of your findings touch which controls |
| PCI DSS v4.0 | Payment card data security standard | Assessment against the standard, with future-dated requirements mandatory since 31 March 2025 | Help spotting misconfigurations that affect in-scope systems |
| NIST SP 800-53 Rev. 5 | A catalogue of security and privacy controls in 20 families, published September 2020 | Organisations select and tailor baselines | Traceability from a finding to a control identifier |
| CIS Benchmarks | Consensus configuration guidance per platform | Run benchmark checks; Level 1 and 2 profiles | Direct detection of benchmark deviations |
What SOC 2 is and is not
SOC 2 is part of the AICPA's System and Organization Controls suite. Its control criteria are the Trust Services Criteria, covering security, availability, processing integrity, confidentiality and privacy; the AICPA has also issued exposure drafts of proposed 2027 revisions, so details may shift. Industry explainers such as Drata's emphasise that SOC 2 is an attestation, an examination by a CPA firm resulting in an opinion, rather than a certification, and that there is no pass mark or "compliant" status issued by the AICPA. A Type 1 report assesses whether controls are suitably designed at a point in time; a Type 2 report covers how they operated over a period.
So "SOC 2 ready" or "control mapping" can be useful, but it does not mean an auditor has examined the vendor, and it is not a report you can hand your own auditor as proof of the vendor's controls.
Varcio's mapping covers eight SOC 2 criteria: CC6.1 (logical access), CC6.2 (credential lifecycle), CC6.3 (role-based access), CC6.6 (boundary protection), CC7.1 (vulnerability detection), CC7.2 (anomaly monitoring), CC8.1 (change management) and A1.2 (recovery infrastructure). Notice the direction of the mapping: it takes findings in your cloud, such as an exposed resource, an old access key, an over-broad role or missing backup protection, and links them to criteria you may need to evidence. It is a tool for your compliance posture, not a statement about Varcio's. Varcio's own enterprise plan includes a SOC 2 evidence package, and it says formal certification is in progress. Verify the current status when you buy.
The other frameworks, briefly
- ISO/IEC 27001:2022 cut Annex A from 114 to 93 controls in four themes (organisational 37, people 8, physical 14, technological 34). The transition deadline for 2013 certificates was 31 October 2025, per consultancy summaries such as TUV SUD's.
- PCI DSS v4.0.1 is the current limited revision; its future-dated requirements became mandatory on 31 March 2025 (51 or 52 of them, depending on the source). Varcio's page names v4.0, so check which version your assessor applies.
- NIST SP 800-53 Rev. 5 has 20 control families; control counts depend on whether enhancements are included, with figures near 1,190 quoted, so treat any single count with care.
- CIS Benchmarks are consensus configuration guidelines. AWS Security Hub added CIS AWS Foundations Benchmark v5.0 in October 2025, a reminder that benchmark versions move.
"SOC 2 compliant" is nearly meaningless; "we have a Type 2 report covering these criteria for this period, issued by this firm" is a claim you can check.
A due-diligence checklist for any automation vendor
Before connecting any tool that can act on your cloud, get written answers to these.
- Credentials. For each cloud, is access role-based and short-lived, or a stored key? Where, and encrypted how?
- Separation. Are read and write separate identities, so you can start read-only?
- Approval. Which actions run without a human, and can the proposer approve itself?
- Limits. Is there a per-run and per-period cap on automated actions?
- Recovery. Which actions can be rolled back, and is rollback tested?
- Audit. What is logged, who can alter it, can you export it?
- Certification. Which reports exist today, from whom, for which period? Anything else is a mapping.
- Residency. Varcio states data is processed and stored in AWS Asia Pacific (Mumbai) with no region selection today, and asks you to raise residency needs before starting. Ask every vendor.
- Vendor breach. What could an attacker do with the access you granted? Grant little.
A staged adoption plan
Promotion criteria matter more than dates. The thresholds below are illustrations to adapt, not Varcio guidance or industry standards.
| Stage | Scope | Move on when |
|---|---|---|
| 1. Read-only | Connect without write permissions; review findings by hand | You agree with the savings estimates |
| 2. Approval queue | Enable low-risk remediation through the queue | Approvals take hours, not days, and a rollback has been tested |
| 3. Policies | Tag and budget policies, advisory then blocking | False positives are rare; every blocking policy has an owner |
| 4. ChatOps | Route approvals to Slack or Teams | Approvers act inline |
| 5. Autopilot suggest | Rules propose actions | Proposals match what a human would approve |
| 6. Autopilot live | Autonomous cleanup of low-risk types, small monthly budget | Audit log and verified savings reviewed monthly |
Widen rules only as trust grows. For the detector detail behind these findings, read our guide to Varcio's AWS, Azure, GCP, OCI and Kubernetes coverage. To test the approval flow on your own accounts, start a free 14-day trial from the Varcio platform page, and read Varcio's security controls alongside the questions above.
Honest limits
No pipeline of gates makes automation risk-free. Approvals can be clicked through, thresholds can be set wrongly, "production-like" heuristics are imperfect, and some resources look idle because a quarterly job uses them. The goal is not zero risk but bounded, visible and recoverable risk: small actions, strong defaults, tested rollback and a log that tells the truth. That is what the failures above lacked, and it is what is worth demanding from any tool that touches your cloud.
Frequently asked questions
What if automated remediation breaks something in production?
Varcio's write operations pass policy evaluation, a blast-radius assessment and an explicit human approval. Rollout-safety gates (step-up approval, a rollback success floor and maintenance windows) drop a run to dry run when they are not met. Autopilot sends production-like, public, critical or deletion-protected resources to approval, and every step lands in an immutable audit log.
How does Varcio store cloud credentials?
AWS uses IAM AssumeRole with an external ID, so no static access keys are stored. Azure, GCP and OCI credentials are encrypted at rest using AWS KMS envelope encryption with a per-record AES-256 data key, and are never exposed in logs, API responses or the UI.
Is Varcio SOC 2 certified?
No. Varcio maps findings to controls in 8 frameworks, including SOC 2, with evidence export, but states that mapping is not a certification and that formal certification is in progress. SOC 2 is an attestation report issued by a licensed CPA firm, so confirm status directly during procurement.
Which compliance frameworks does Varcio map to?
Eight: CIS AWS, CIS Azure, CIS Google Cloud, SOC 2, PCI DSS v4.0, ISO 27001:2022, NIST 800-53 Rev. 5 and Cloud Well-Architected. SOC 2 mappings cover CC6.1 to CC6.3, CC6.6, CC7.1, CC7.2, CC8.1 and A1.2.
Can approvals happen in Slack or Microsoft Teams?
Yes. ChatOps lets reviewers list pending approvals with /finops pending and approve or reject requests inline from Slack or Teams, so engineering and finance can act without leaving their workflow.
What is Varcio's Autopilot?
Autopilot is rule-based optimization with three modes: observe, suggest and autopilot. In autopilot mode it can clean up low-risk items such as unattached volumes and orphaned snapshots above a confidence threshold, within a monthly action budget, and it is included from the Business plan.


