SOC 2 log retention: working out how long to keep logs

The criteria never name a number of days. Your report calendar does, and several free tool defaults fall short of it.

SOC 2 log retention has no official number. Nowhere in the Trust Services Criteria is a retention period named,1 so you work it out from two dates: when your observation period ends, and when the auditor stops asking for samples. For a six month Type 2 issued nine months after the period opened, that lands at about twelve months of logs. The bigger risk is quieter. Of the defaults we checked on August 1, 2026, 8 delete evidence before the auditor gets to it.

This is one of the few controls where a mistake cannot be undone. A missing document can be written in an afternoon. A log that was deleted in March is simply gone, and you find out when the auditor asks for a March date. Getting this right costs almost nothing. Getting it wrong can cost you a whole period.

Work out your own number first

A Type 2 tests whether controls ran over a period. The auditor picks instances from inside that period and tests each one.2 The key detail is timing: the picking happens after the period closes. Retention plans that stop at the period end miss the months that follow. Here is a real calendar.

  1. January 1. The observation period opens. From here on, what your systems record belongs to the report.
  2. June 30. The period closes after six months, a length buyers ask for when three is not enough.
  3. July. Fieldwork begins and the prepared by client list arrives. Requests keep coming while testing runs, and follow ups arrive after the first round.
  4. September 30. The report is issued in month nine, counted from the opening day.
  5. Any day can be sampled. January 2 included. On September 30 that log line is 271 days old. It still has to exist.

So your floor is the period length plus the tail, the tail being the stretch from period close to the last evidence request. Call it nine months. Tools do not offer nine month settings, and the next step up is usually 365 days. That is where twelve comes from.

Two things push the number higher. Back to back Type 2 periods overlap, since period two opens while period one is still being examined. 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 helps you pick the window, which is the input to all of this.

Why the criteria stay silent on days

The criteria are written as goals, not settings.1 That is why a search of the document for a retention period comes up empty. It is on purpose. A figure that fits a payments company running twelve month reports would make no sense for a five person team on its first three month window. So the standard leaves the number to your calendar and your policy.

Your policy creates a second floor

The auditor tests your controls against how you described them.3 That matters here. Say your security policy promises twelve months of audit logs, and the only record you have is 90 days of CloudTrail Event history. The standard is not the problem. Your control is running differently from your description, and that is an exception.

There are two honest fixes. Raise retention to match the policy, or rewrite the policy to match what you really keep and can prove. Leaving them out of step creates a finding from a sentence nobody forced you to write. What happens when a control fails shows how that looks in a finished report. Use whichever floor is higher. Derive the number from your calendar, then put that number in the policy.

Accepting a default is quietly setting a deadline nine months out.

Eleven defaults, checked against 271 days

We opened each vendor's own documentation on August 1, 2026, and every row links to the page it came from. The third column asks one question. Does the default keep the oldest record alive through a six month period and a three month fieldwork tail?

Tool and surfaceDefaultLasts 271 days?Fix
AWS CloudTrail: Event history (console view) Docs90 daysNoCannot be changed. Keep a longer record with a trail delivering to S3 or a CloudTrail Lake event data store, both separate from Event history.
AWS CloudTrail Lake: Event data store on one-year extendable retention pricing Docs366 daysYesLeave the default in place. It can go as high as 3,653 days.
Amazon CloudWatch Logs: Log group DocsIndefiniteYesNo change needed. Check that no one set an expiry of 30 or 90 days on a group you depend on.
GitHub: Organization and enterprise audit log Docs180 daysNoNo retention control exists. Stream the audit log to storage you own, or export it on a fixed schedule.
GitHub: Git events in the audit log Docs7 daysNoOnly streaming keeps them. If a stream pauses, it buffers for seven days and then loses data.
Google Cloud Logging: _Required log bucket Docs400 days, fixedYesNothing to do. Admin Activity and System Event audit logs go here, and the period cannot be shortened.
Google Cloud Logging: _Default log bucket Docs30 daysNoRun gcloud logging buckets update _Default --location=global --retention-days=365, or change it on the Logs Storage page.
Google Cloud: Data Access audit logs DocsOff by default (BigQuery excepted)NoEnable them under IAM and Admin, then Audit Logs. Until then nothing is written, so there is nothing to keep.
Google Workspace: Admin, Login, Drive, Groups, OAuth Token, SAML, Devices and Calendar log events Docs6 monthsNoNo retention setting. Export log events to BigQuery, available on Frontline Standard and Plus, Enterprise Standard and Plus, Education Standard and Plus, and Enterprise Essentials Plus.
Google Workspace: Email Log Search Docs30 daysNoCannot be extended. If mail routing evidence is in scope, save it when it happens.
Google Workspace: BigQuery log export table expiration Docs60 daysNoGo to Reporting, then Data integrations, and edit BigQuery Export. Raise the expiration so the export outlives its source.
Recheck before you rely on this

Vendors change defaults without notice, and an account created in 2023 may behave differently from one created next quarter. Treat the table as a list of settings to open, not a report on your account. Look at each one in your own console before an examination, and again at renewal.

Four rows worth a second look

CloudTrail Event history is only a console view
It holds 90 days and sits apart from any trail or event data store. Editing a trail does not extend it. Your lasting record is the trail or the Lake store, and without one of them, 90 days is all there is.
Google Cloud Data Access logs start switched off
Admin Activity and System Event logs go to the _Required bucket for 400 days on their own. Data Access logs, which show who read what, are disabled outside BigQuery until you enable them. No logs written means nothing to retain.
The _Default bucket keeps 30 days
A single command, shown in the table, fixes it. Skip it and an account that looks well instrumented in month one has nothing to sample by month eight. Change it before the period opens.
Workspace keeps six months, and its export keeps sixty days
Six months covers one six month period with zero tail, and no admin setting extends it. The BigQuery export is the escape route, but its tables expire after 60 days by default. Set it up and forget it, and the copy dies before the original.

Our connector guides for AWS, GitHub, Google Cloud and Google Workspace cover the read-only permissions each one needs. That is a separate question from how long each source keeps its own data.

What this costs, and what getting it wrong costs

Every fix above is a setting, and settings are free. Log storage at a small company's volume is a minor line on a cloud bill. You do not need a consultant for any of it. One engineer with the table above and an hour of console time can do the whole list.

The expensive outcome is a lost period. If the auditor cannot sample, you run the period again, which means another stretch of calendar while the deal waits. On our software, which is $199 a month, cancel any time, the software side of a rerun is small. The calendar is the real loss.

That is why continuous collection helps. Our software pulls recurring evidence from AWS, GitHub, Google Cloud and Google Workspace while the period runs, and files it against the right control. A copy taken in February is still there in September, even if the source rotated it out in June. You should still raise the retention windows. The copy just removes the case where one unnoticed default forces a rerun.

A one week retention checklist

  1. Write down three dates. Period start, period end, and a realistic issue date. Everything else follows from them, and a month of error is how a setting ends up 30 days short.
  2. Read the live value in each console. Not the documented default and not this page. Someone may have lowered it to trim a bill two years ago.
  3. Set every window you control to 365 days. Where there is no setting, use an export, and check the export's own retention.
  4. Screenshot the correct setting. A capture showing the value, its scope and the date counts as evidence for the monitoring criteria.
  5. Book two rechecks. One before the period opens and one before fieldwork. A mid period change made to save money stays silent until an auditor asks.

The evidence checklist lists what each system must produce and how often. The prepared by client list is the July request in the calendar above, and retention decides whether answering it is a quick query or an awkward email.

Who tests it

cybersoftware 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. The records they sample must exist on the day they ask, not only on the day they were created. SOC 2 results in a report on a period rather than a certificate, so those records stay relevant as long as the report is in use.

Your next step

Not sure whether your logging covers the criteria at all? The free readiness assessment takes about 15 minutes and returns a readiness assessment, score, gap list and one AI sample policy, including where monitoring falls short. When you are ready to collect evidence continuously, the pricing page lays out the monthly and yearly plans, and how audits are priced through our preferred pricing program.

Questions

What log retention period does SOC 2 require?
None is written into the standard. The criteria describe objectives, so you work the number out from your own report. Logs must last through the whole observation period and the fieldwork after it, which for a six month Type 2 issued around month nine comes to about twelve months.
Are 90 days of logs enough?
Not for a Type 2. Ninety days is shorter than even a three month period once the sampling weeks after it are added, and far short of six months. It can work for a Type 1, which looks at controls on a single date.
Will the CloudTrail 90 day limit cause a problem in the audit?
Only if it is your only record. The 90 day view is CloudTrail Event history, which cannot be changed. A trail to S3 or a CloudTrail Lake event data store keeps events much longer, and Lake defaults to 366 days on one-year extendable retention pricing. The finding comes from a policy promising twelve months while only Event history exists.
What should our retention policy say about logs?
A period you can prove, the systems it covers, who checks it, and how often. The auditor tests you against what you wrote, so a twelve month promise over a 30 day setting is a control not working as described. Write what you actually keep, then raise it on purpose.
Can these vendor defaults change?
Yes. We read every default here on the vendor documentation on August 1, 2026, and each row links to its page. Check the live value in your own account before an examination instead of relying on any summary, this one included.

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

The readiness assessment is free, with no payment and no card. When you are ready, the software is $199 a month, cancel any time, and audits go through our preferred pricing program. You can be audit-ready starting at about a week.

Start with a free readiness assessment

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