SOC 2 log retention: how long to keep logs

The Trust Services Criteria set no retention period. The floor falls out of your own calendar, and several tool defaults sit well underneath it.

SOC 2 log retention has no required number. The Trust Services Criteria name no retention period anywhere,1 so the floor is one you derive. Two inputs set it. How long the observation period runs, and how long after it closes the auditor is still pulling samples out of it.

For a six month Type 2 whose report is issued nine months after the period opened, that works out to roughly twelve months of logs. The arithmetic is below. So is the part that does the actual damage: 8 common defaults, verified on August 1, 2026, expire evidence before the examination ever reaches it.

Retention is the control where the damage stays invisible until it is permanent. A missing policy is a gap you close in an afternoon. A deleted log is gone. No remediation brings January back in September, and nobody notices the loss until an auditor asks for a date that no longer exists in the system.

What the criteria actually say

Nothing about days. The criteria are written as objectives to be met rather than settings to be configured,1 which is why searching them for a retention period returns nothing. That absence is not an oversight. A period long enough for a payments company running twelve month reports would be arbitrary for a five person team on a first three month window.

What exists instead are two constraints, and together they produce a number for your specific report. The first is how the examination works. The second is what you wrote in your own policy.

The arithmetic that sets the floor

A Type 2 examination tests whether controls operated over a period, which means the auditor selects instances from inside that period and tests each one.2 The selection happens after the period closes, not during it. That gap is the part retention planning leaves out.

Work a real calendar.

  1. January 1. The observation period opens. Everything your systems write from this date forward is inside the report.
  2. June 30. The period closes. Six months, the length a buyer most often names when a three month window is not enough for them.
  3. July. Fieldwork starts and the prepared by client list arrives. Requests keep coming for as long as testing runs, and follow up requests land after the first pass.
  4. September 30. The report is issued. Month nine, counting from the day the period opened.
  5. The sample can be any day in the period. Including January 2. On September 30 a January 2 log record is 271 days old, and it has to still be there.

So the floor is the period length plus the tail, where the tail runs from the period closing to the final evidence request. Nine months, near enough. Retention settings do not come in nine month increments, and the next step any of the tools below offer is 365 days. That is where twelve comes from.

Two things push past that floor rather than pulling back from it. Consecutive Type 2 periods run end to end, so period two opens while period one is still being examined and the two windows overlap in your logs. And a customer reading the report in month ten can ask a question that sends you back to the same records. How long the observation period has to be covers picking the window itself, which is the input this whole calculation depends on.

Retention is not a security setting. It is a deadline you set nine months in advance, by accident, on the day you accepted a default.

Your own policy is the second floor

The examination tests your controls against your description of them.3 That cuts both ways here. If your information security policy states twelve months of audit log retention and the only record you hold is 90 days of CloudTrail Event history, the problem is not the standard. A control is operating differently from the way it was described, which is the definition of an exception.

Two fixes are honest. Raise the retention until it matches the policy, or write the policy to match what you genuinely retain and can prove. Leaving the two mismatched manufactures a finding out of a document nobody had to write that way. What happens when a control fails covers how that reads in a finished report.

Pick the higher of the two floors. Derive the number from your calendar first, then write that number into the policy, rather than copying a retention period out of a template and discovering in month eight what it committed you to.

Defaults that expire evidence inside the period

Here is the table nobody publishes. Every row was opened on the vendor’s own documentation on August 1, 2026 and links back to the page it came from. The middle column answers one question: does the default survive a six month period plus a three month fieldwork tail, which is 271 days of the oldest record.

Tool and surfaceDefaultClears 271 days?What to change
AWS CloudTrail: Event history, the console view Docs90 daysToo shortNot configurable. Create a trail that delivers to S3, or a CloudTrail Lake event data store. Event history is separate from both.
AWS CloudTrail Lake: Event data store, one-year extendable retention pricing Docs366 daysYesNothing, if you keep the default. Maximum is 3,653 days.
Amazon CloudWatch Logs: Log group DocsIndefiniteYesNothing to add. Confirm nobody set Expire events after to 30 or 90 days on a group you are relying on.
GitHub: Organization and enterprise audit log Docs180 daysToo shortThere is no retention setting. Turn on audit log streaming to your own store, or export on a schedule you keep.
GitHub: Git events inside the audit log Docs7 daysToo shortStreaming is the only way to keep these. A paused stream buffers for seven days and then drops data.
Google Cloud Logging: _Required log bucket Docs400 days, not configurableYesNothing. Admin Activity and System Event audit logs land here, and you cannot shorten it.
Google Cloud Logging: _Default log bucket Docs30 daysToo shortgcloud logging buckets update _Default --location=global --retention-days=365, or edit the bucket on the Logs Storage page.
Google Cloud: Data Access audit logs DocsOff by default, except BigQueryToo shortTurn them on under IAM and Admin, Audit Logs. Until you do there is nothing to retain and nothing to sample.
Google Workspace: Admin, Login, Drive, Groups, OAuth Token, SAML, Devices and Calendar log events Docs6 monthsToo shortThere is no retention setting. Export log events to BigQuery, on Frontline Standard and Plus, Enterprise Standard and Plus, Education Standard and Plus, or Enterprise Essentials Plus.
Google Workspace: Email Log Search Docs30 daysToo shortNo setting exists. If mail routing evidence is in scope, capture it as it happens.
Google Workspace: BigQuery log export, table expiration Docs60 daysToo shortReporting, then Data integrations, then edit BigQuery Export. Raise the expiration, or the export deletes faster than the source.
These change, and this page will go stale

Vendor defaults move without announcement, and a default that applied to an account created in 2023 may not apply to one created next quarter. Read the numbers above as a list of settings worth opening, not as the current state of your account. Check each one in your own console before an examination, and check it again at renewal.

The four that catch people out

Four of those rows are worth reading twice, because in each one the surface a founder assumes is the record turns out not to be.

CloudTrail Event history is not your audit trail
It is a 90 day console view, and it is separate from any trail or event data store you create. Changing a trail does not change it, and it cannot be extended. The ongoing record is the trail or the Lake event data store, and if neither exists then 90 days is genuinely all you have.
Google Cloud Data Access logs are off
Admin Activity and System Event logs land in the _Required bucket and keep 400 days whether you configure anything or not. Data Access logs, the ones that show who read what, are disabled by default outside BigQuery. Retention is beside the point until they are turned on, because nothing is being written.
The Google Cloud _Default bucket holds 30 days
One command fixes it and the command is in the table. This is the single most common way a Google Cloud account looks well instrumented in month one and has nothing to sample in month eight. Raise it before the period opens, not after.
Google Workspace keeps six months, and its own export keeps sixty days
Six months of log events is exactly one six month period with no tail at all, and there is no admin setting that extends it. The BigQuery export is the way out, and its table expiration defaults to 60 days, so an export configured and forgotten deletes faster than the logs it was meant to preserve.

The connector setup pages for AWS, GitHub, Google Cloud and Google Workspace walk through the read-only permissions each one needs, which is a different question from how long the source system keeps what it is reading.

What to do this week

  1. Write down your period dates first. Start date, end date, and a realistic issuance date. Every retention decision below is downstream of those three dates, and guessing them wrong by a month is how a setting ends up 30 days short.
  2. Open each console and read the actual value. Not the vendor default, not this page. The value on your account, which somebody may have changed for a cost reason two years ago.
  3. Set every window you control to 365 days. Log storage is cheap relative to re-running a period. Where the tool offers no setting, the fix is an export, and the export needs its own retention checked.
  4. Screenshot the setting once it is right. The configuration screen showing the retention value, the scope it applies to and the date is itself evidence for the criteria that cover monitoring.
  5. Put a recheck on the calendar. Once before the period opens and once before fieldwork starts. A retention change made mid period by somebody optimizing a bill is silent until it is not.

The evidence checklist lists what each of these systems has to produce and how often, and the prepared by client list is the request that arrives in July in the calendar above. Retention is what decides whether answering it is a query or an apology.

Keeping a second copy

Every fix on this page is a setting, and settings are free. The part that costs something is remembering to check them while a period is running, which is why continuous collection matters more than any single retention number.

Polara G.R.C. pulls the recurring evidence from AWS, GitHub, Google Cloud and Google Workspace as the period runs and stores it against the control it belongs to. A copy taken in February is still there in September even if the source system rotated it out in June. That does not remove the reason to raise the retention windows. It removes the scenario where a default you never saw is the only thing standing between you and a period you have to run again.

Who tests this at the end

Polara Labs is not a CPA firm. SOC 2 examinations are performed by independent licensed U.S. CPA firms.

Your examiner is an independent partner auditor, a licensed U.S. CPA firm, and the evidence they sample has to exist on the day they ask for it rather than on the day it was generated. SOC 2 produces a report on a period, not a certificate, so the records behind it stay relevant for as long as the report is in circulation.

Questions

How long does SOC 2 require you to keep logs?
There is no required number. The Trust Services Criteria state objectives rather than retention periods, so the floor is derived from your report. Logs have to survive the whole observation period and the fieldwork that follows it, which for a six month Type 2 issued around month nine means roughly twelve months.
Is 90 days of log retention enough for SOC 2?
Not for a Type 2. Ninety days is shorter than a three month observation period once you add the weeks the auditor spends sampling after the period closes, and it is far shorter than a six month period. It can be enough for a Type 1, which describes controls at a single date rather than over a period.
Does CloudTrail 90 day retention fail a SOC 2 audit?
The 90 day window is CloudTrail Event history, the console view, and it is not configurable. It is not the only record. A trail delivering to S3 or a CloudTrail Lake event data store keeps events far longer, and the Lake default on one-year extendable retention pricing is 366 days. What creates a finding is a policy that promises twelve months while only Event history exists.
What should a SOC 2 data retention policy say about logs?
A number you can prove, the systems it covers, who checks it, and how often. You are examined against the period you wrote down, so a policy stating twelve months while a tool holds 30 days describes a control that is not operating as described. Write the number you actually retain, then raise it deliberately.
Do these vendor defaults change?
Yes. Every default listed on this page was read on the vendor documentation on August 1, 2026, and each row links to the page it came from. Recheck them in your own account before an examination rather than trusting any third party summary, including this one.

Sources

  1. TSP Section 100, Trust Services Criteria for Security, Availability, Processing Integrity, Confidentiality, and Privacy AICPA. The criteria themselves, including the common criteria every SOC 2 report covers. Checked 1 August 2026.
  2. SOC 2 Report AICPA. What a SOC 2 report is and who may issue one. Checked 1 August 2026.
  3. Statements on Standards for Attestation Engagements AICPA. The attestation standards a SOC 2 examination is performed under. Checked 1 August 2026.

Get audit-ready without a compliance team.

$4,000 one time for SOC 2 Type 1, with the first examination and the auditor engagement fee included. audit-ready starting at about a week.

Get started

Polara Labs is not a CPA firm. SOC 2 examinations are performed by independent licensed U.S. CPA firms.

polara labs

Polara Labs builds both sides of the small end of the compliance market: the readiness platform startups use to earn a SOC 2, and the practice software boutique firms use to run the examination. Prices are published on each product page.

© 2026 Polara Labs Inc. All rights reserved.Contact: founder@polaralabs.com

Polara Labs is not a CPA firm. SOC 2 examinations are performed by independent licensed U.S. CPA firms in our network; the audit opinion is theirs alone and is not regulated by Polara Labs. We generate custom policies, evidence checklists, and remediation guidance. You remain responsible for implementing controls and owning audit outcomes. Replace placeholders with your actual controls and have final documents reviewed by qualified professionals before your audit.

Built by Surya Shetty