Compliance

SOC 2 Exceptions and Qualified Opinions: Causes and Fixes

22 September 2026 9 min read

A SOC 2 report turns qualified when the auditor’s testing finds one or more control deviations serious enough that they cannot state the control operated effectively across the full period. In vulnerability management, that almost always traces back to something narrow: one scan that ran late, one critical finding that sat open past its stated SLA, or one closed ticket with no rescan evidence attached to it. Knowing exactly how a single missed cycle becomes a written exception, and how to read one in a vendor’s report during due diligence, changes how you respond when it happens to you.

Exception, deviation and qualified opinion: what each term means in a SOC 2 report

The three terms get used loosely in conversation but mean specific things inside a report. A deviation is a single instance where a control did not operate the way the system description says it should: one vulnerability scan that skipped a subnet, one high finding remediated in 47 days against a documented 30 day SLA, one access review that was never signed off. An exception is the auditor’s written disclosure of one or more deviations against a specific Trust Services Criterion, typically CC7.1 (identifying vulnerabilities), CC7.2 (monitoring for security events) or CC7.3 and CC7.4 (responding to and remediating identified issues). A qualified opinion is the auditor’s overall conclusion, stated in section 2 of the report, that because of one or more exceptions, controls did not operate effectively throughout the review period.

Opinion type What it means Typical trigger
Unqualified (clean) All tested controls operated as described, no exceptions noted Sampled evidence matched policy in every instance
Qualified One or more specific controls failed testing; the rest of the report stands A deviation rate above what the auditor considers immaterial for that control
Adverse Controls did not operate effectively across most of the system Widespread or systemic failures across multiple criteria
Disclaimer Auditor could not obtain enough evidence to form an opinion Missing logs, missing tickets, no audit trail to sample against

A qualified opinion on a single CC7 control is far more common, and far less alarming to an informed reader, than most companies assume the first time it happens to them. What matters more than the fact of the qualification is what caused it and how quickly it got fixed.

How one missed scan cycle or overdue remediation becomes a reported exception

SOC 2 Type II auditors do not review every day of the twelve month period. They pull a sample, commonly somewhere between 25 and 40 items for a control that operates continuously, following AICPA sampling guidance for the frequency of the control. If your policy states weekly authenticated scans and the auditor samples 25 weeks, one missed or delayed scan is a 4 percent deviation rate against a control you defined as continuous. There is no floor below which a single miss is automatically excused; it depends on the auditor’s judgment about materiality and root cause, but one instance is frequently enough to generate a written exception once the control statement itself sets a firm cadence.

The same logic applies to remediation SLAs. Auditors ask for the full population of vulnerabilities opened during the period, then sample tickets and check the close date against the SLA your own policy documents. A common tiering looks like this:

  • Critical severity: remediate within 15 days
  • High severity: remediate within 30 days
  • Medium severity: remediate within 90 days
  • Low severity: remediate within 180 days, or accept with documented justification

These numbers vary by organization and are not mandated by the Trust Services Criteria itself; the criteria only requires that you define a policy and follow it. That is precisely why one overdue critical finding is such an efficient way to generate an exception: the auditor is not testing against an external standard, they are testing your own commitment back against your own evidence.

There is a second, less obvious failure mode that produces exceptions just as often as a missed SLA: a ticket marked closed with no proof the fix actually worked. If your evidence for “remediated” is a status field flipping to closed, with no rescan, no updated scanner output and no timestamp tying the two together, an auditor can reasonably conclude the control does not verify its own effectiveness. Platforms that automate this step, such as SITEY, close the loop by re-running the specific check against the specific asset before a finding is allowed to leave the open state, so the evidence trail an auditor asks for already exists rather than needing to be reconstructed from ticket comments. Teams still on manual tracking should treat this gap as the first thing to fix; see how retest and closure evidence gets attached automatically for the mechanism involved.

Management responses and where they appear in the report

Every SOC 2 Type II report has a section, usually titled “Description of Tests of Controls and Results,” where each tested control is listed alongside the testing procedure, the result, and, when there is an exception, a management response. This is the part of the report a careful reader goes to first, because the qualification headline in section 2 tells you almost nothing on its own.

A weak management response says something like “the finding was addressed.” A response that actually reduces reader concern includes four things: the root cause of the deviation, the specific corrective action taken, the date it was implemented, and any compensating control that was in place during the gap. For example: “One critical vulnerability exceeded the 15 day SLA due to a change freeze during a payment provider migration. Effective March 2026, critical findings identified during a change freeze are auto-escalated to the security lead and tracked on a separate exception log reviewed daily. No exploitation was observed; the affected host was isolated from the internet-facing segment for the duration of the freeze.”

That level of detail does not remove the qualification, it survived audit testing as a documented fact. But it tells a reviewing security team that the organization understands its own control and closed the gap with a specific, checkable change rather than a promise. Tracking each finding through its full history, from discovery to verified closure, so this kind of response can be written from actual data rather than reconstructed memory, is largely a matter of whether your vulnerability lifecycle tracking captures state changes with timestamps in the first place.

Commercial impact: how customers read exceptions during vendor review

Not every exception is a deal risk, and treating them all as equally damaging wastes time in vendor security review. Procurement and security teams reading your report typically weigh four factors: which Trust Services Criterion was affected, how many deviations were found against the sample size, whether the cause looks systemic or isolated, and whether the corrective action was already complete by the report date.

CC7 exceptions, the family covering vulnerability identification and response, draw more scrutiny than most because they map directly to a question every serious vendor questionnaire asks: how quickly do you find and fix security issues. A single overdue critical finding with a documented, completed corrective action reads very differently from a pattern of repeated misses across multiple quarters with no changed process. If your own report carries a qualification, the practical move during a customer’s review is to proactively send the management response alongside the report rather than waiting for the customer to ask, and to reference the specific control change by name so it can be independently verified against later reports. If enough time has passed since the report’s “as of” date, offer a bridge letter, a short auditor or management-signed statement confirming no material changes to the control environment since the report period ended.

Correcting the underlying control before the next observation period

Fixing the ticket that caused the exception is necessary but not sufficient. Auditors testing your next period want to see the control operating consistently across the new window, and a single corrected instance sitting next to an unchanged process invites the same finding again. The fix has to address why the deviation happened, not just close the individual case.

Start with root cause, and be specific rather than general:

  1. Was the SLA itself unrealistic for the resourcing you have, meaning it will keep getting missed regardless of intent?
  2. Was ownership unclear, so the finding sat in a queue with no individual or team accountable for the countdown?
  3. Was scan coverage incomplete, meaning the asset was never scanned on schedule rather than found late?
  4. Was closure verification missing, meaning the fix may have shipped on time but nobody confirmed it worked?

Each of these has a different fix. Unrealistic SLAs get renegotiated to something the team can actually hit, then documented as the new baseline before the next audit period starts, not after. Unclear ownership gets fixed by assigning findings to a team or role rather than a named individual who might leave, with automatic escalation when a finding crosses roughly 80 percent of its SLA window, not just when it breaches. Some vulnerability platforms, SITEY included, build this escalation into the assignment step itself, so a finding approaching its deadline reassigns or alerts on a schedule rather than depending on someone remembering to check a dashboard. Coverage gaps get fixed by reconciling the scan target list against the live asset inventory on a fixed cadence rather than a static list maintained by hand. Missing verification gets fixed by making rescan evidence a required field before a ticket can transition to closed, which is the same automated gate discussed earlier and is worth applying consistently across the whole patch management workflow rather than only on the finding that triggered the exception.

Give the corrected control enough runway before the next audit window closes. Auditors generally want to see a control operating consistently for the full period under test, so a fix implemented one month before fieldwork starts has far less evidentiary weight than one that has been running, and generating clean samples, for most of the year.

How to read another vendor’s qualified report during due diligence

The same reasoning applies in reverse when you are the one reviewing a vendor’s SOC 2 report and find a qualification in it. A short checklist keeps the review objective instead of reactive:

  1. Identify which Trust Services Criterion and specific control the exception is attached to, and whether it touches data relevant to your relationship with that vendor.
  2. Compare the number of deviations against the disclosed sample size to get an actual rate, rather than reacting to the word “exception” alone.
  3. Read the management response in full for root cause, corrective action, implementation date and any compensating control.
  4. Check the report’s “as of” date against today. If months have passed, ask for a bridge letter or a current status update rather than relying on a stale snapshot.
  5. Request supplemental evidence when the relationship is high risk: a recent scan summary, a remediation ticket export, or a copy of the current SLA policy.

If your own compliance program spans multiple frameworks, the same underlying control evidence, scan cadence, remediation timestamps, verified closure, typically maps across ISO 27001 Annex A.8.8, PCI DSS Requirement 11.3, and the technical safeguards implied by GDPR Article 32 and BDDK’s operational risk expectations, even though each framework phrases the requirement differently. Keeping that mapping current is what turns a single audit trail into evidence for every framework a customer might ask about; platforms built around this idea, such as SITEY, tag each finding against every applicable framework at the point of triage rather than requiring a separate mapping exercise before each audit. See how one control maps to multiple frameworks for the underlying structure.

A qualified opinion is a data point, not a verdict. Read carefully, it tells you exactly which control needs attention and how the organization responded when it slipped. Written carefully, it does the same for the vendor reading yours.

About SITEY

SITEY is an autonomous vulnerability management platform. It discovers, validates, prioritizes, remediates and re-tests vulnerabilities through an eight-phase automated pipeline, unifying output from 17 integrated scanners. SITEY is self-hosted: it runs in your own infrastructure and your findings are stored there. Outbound connections are limited to licence activation and the optional services you enable, such as an AI provider, CVE enrichment and patch catalogues. Pricing is 599 USD per month or 5,999 USD for a perpetual lifetime license. See pricing or how the platform works.

SITEY closes the loop, not just the report.Discover, validate, fix and verify in your own infrastructure.

See pricing