
Andrew Hanna

Andrew Hanna

The short version: Summer '26 ships API version 67.0, and for DevOps
teams three items matter more than everything else combined. Apex database operations
now default to user mode, classes with no sharing keyword now default to
with sharing, and WITH SECURITY_ENFORCED no longer compiles.
All three are scoped by the API version a class is saved at, which turns your
pipeline's API version setting into a behavioural decision rather than housekeeping.
Summer '26 is API version 67.0. Sandbox preview opened on 8 May 2026, and production rollouts ran on 15 May, 5 June and 12 to 13 June 2026, so if you are reading this you are already on it. The complete list lives in the release notes. What follows is the subset that touches deployment, metadata and API behaviour.
Three things, in order of how fast they bite.
WITH SECURITY_ENFORCED is retired and no longer compiles.
This one is loud and immediate: any deployment still carrying the clause fails the
build. Replace it with WITH USER_MODE, as set out in the
developer guide to the release.
with sharing.
The old default was the opposite. Code that quietly relied on system-mode access now
quietly returns less data.
Triggers still run in system mode across all versions. That is a useful escape hatch to remember and a dangerous one to lean on.
This is the part most release round-ups miss. The new defaults apply to classes saved at API version 67.0 or later. Your org's behaviour therefore does not change on the day the release lands. It changes on the day your pipeline bumps an API version.
Which promotes three lines in your repository to functional changes:
sourceApiVersion in sfdx-project.jsonpackage.xml.cls-meta.xmlThree consequences follow, and none of them are theoretical.
The safe order is to declare sharing explicitly on every class first, then bump the API version. Explicit beats default, in both directions.
login() on versions 31.0 to 64.0, retiring in
Summer '27.
None of these are urgent this sprint. All of them are the kind of thing discovered by an integration failing at 2am eighteen months from now. Run the API version inventory while it is cheap.
aiAgentScorerDefinitions, which puts agent quality
gates under source control where they belong.
ApexIntegrationTests in the features array of the scratch org
definition. Add it before your next pipeline run fails for no obvious reason.
WITH SECURITY_ENFORCED and replace it. This
is a build break, not a warning.
ApexIntegrationTests to your scratch org definition.Does Summer '26 change the behaviour of existing Apex?
Not on its own. The new user mode and sharing defaults apply to classes saved at API version 67.0 or later, so existing classes keep their behaviour until you bump their API version.
What replaces WITH SECURITY_ENFORCED?
Use WITH USER_MODE. The old clause is retired and no longer compiles, so
any deployment still carrying it will fail.
When do old API versions actually stop working?
Versions 31.0 to 40.0 are deprecated with full retirement in Summer '28, and SOAP
login() on versions 31.0 to 64.0 retires in Summer '27. Move integrations
to 41.0 or later.
Do these changes affect Apex triggers?
No. Triggers continue to run in system mode across all API versions.
If your pipeline cannot tell you which classes lack an explicit sharing keyword, that is the gap worth closing before the next release. Serpent runs AI code review on every change, on every plan, and flags exactly this class of governance drift before it reaches production.
Commitment free!