Andrii Sukhetskyi

Andrii Sukhetskyi

Worth Knowing

Salesforce OAuth Is Changing, Again 👋

Tomorrow, October 21, 2026, Salesforce starts rolling out security updates to how your integrations work.

It has been a while, and I had already started worrying they'd figured out we have actual features to build. No reason to worry, though: they did not forget, and here we are again.

Over the coming weeks and months, Salesforce will be tightening the rules for integrations across sandbox and production environments to deliver a few improvements:

  • Refresh tokens expire after 30 days without use, in sandboxes starting October 21 and in production starting November 4.
  • The OAuth device flow works only from local External Client Apps with a localhost callback, starting November 30.
  • The username-password, user-agent and hybrid user-agent flows are retired on February 20, 2027.

If you have received the email and do not know where to start, I put together a detailed guide on what this is about and what you should look for: https://www.bulkifiedthinking.com/salesforce-is-changing-how-integrations-log-in/

If you have any questions or insights, do not hesitate to leave a comment, and I will try to elaborate, correct or help you on this journey!

Andrii Sukhetskyi

Andrii Sukhetskyi

Worth Knowing

From AIForce to SIForce: What’s New with Winter ‘27

As you might have heard, on Friday Marc Benioff officially renamed AIForce to SIForce. This follows the U.S. administration’s executive order that tells federal agencies to replace “Artificial Intelligence” with “Super Intelligence”.

(And by “officially” I mean a post on X)

In case you missed it, AIForce was announced at Dreamforce 2026. It’s mostly a marketing layer that combines capabilities such as Headless 360, hosted MCP servers, APIs, skills and plugins. Everything we’ve known about for quite some time just got an extra layer on top and was packaged together as AIForce.

Now AIForce becomes SIForce, and we should expect other products to be renamed around the Super Intelligence name as well.

Winter ‘27 Is Live

As for the more exciting news, the last release weekend was October 10, so Winter ‘27 has now officially landed in all production environments.

If you missed what’s included, check out this post: Salesforce Winter ‘27 Is Here: All Developers Need to Know

Users have already found two issues in the new release that you need to be aware of.

CustomObject metadata retrieval fails when Profile Filtering is enabled under a high assurance session

Profile Filtering has been an optional setting since Winter ‘21, but Winter ‘27 now turns it on through a release update. If Profile Filtering is enabled under User Management Settings in your org, and Manage Profiles and Permission Sets is set to Raise session to high assurance under Identity Verification settings, your Metadata API calls that retrieve CustomObject might fail with a Salesforce error.

For example, a simple retrieve like this one is enough to run into it:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Account</members>
        <members>Invoice__c</members>
        <name>CustomObject</name>
    </types>
    <version>68.0</version>
</Package>
sf project retrieve start --manifest manifest/package.xml --target-org production

The same applies to any deployment tool or CI pipeline that uses the Metadata API retrieve() call behind the scenes.

For now, the workaround is to turn off Profile Filtering in your production org and wait for a fix.

“Insufficient Privileges” error on the MFA registration page

When new users log in to Salesforce for the first time and are asked to set up MFA, the setup fails with an “Insufficient Privileges” error.

The workaround is to ask the user to log out, log back in and try the MFA setup again (if it’s shown). That should fix it.

Make sure to talk to your users and check your production org before the busy week starts eating you alive. Stay safe, Super Intelligence is here!

Andrii Sukhetskyi

Andrii Sukhetskyi

Did Salesforce’s Massive Outage Work as Marketing for AIforce?

September 16, 2026, was expected to be a successful second day of Dreamforce, uncovering more headless capabilities for our AI Agents to communicate with Salesforce and use its capabilities without needing to log in to Salesforce directly.

Instead, it all started with one of Salesforce's biggest outages, gifting customers across all regions with severe delays and the inability to access Salesforce at all.

Trust Status - Salesforce

Indeed. Considering all the announcements, why would you even need to log in to Salesforce? It's a headless era and September proved it to be quite headless.

During the incident, Salesforce reported that requests were stalling while waiting for a response from an internal login service, consuming available server resources.

Shortly after, Salesforce said it believed an external dependency failure was affecting the legacy login server. A core system component then experienced increased load and could no longer process requests at the required capacity.

This incident occurred literally a few hours after the announcement of AIforce, a product name bringing Salesforce's headless capabilities under a single product direction and promoting even more headless interaction with Salesforce.

Quite timely, I must say.

All things aside though, this incident proves that underneath all that AI revolving machine of progress and probabilistic thinking, we still have good old technologies and dependencies which, at the end of the day, can make a bigger impact than any AI capability introduced into the ecosystem.

Not to mention that I have a feeling AI coding had its place somewhere in this incident, but let's stay away from speculation.

Instead, I highly encourage all of you to have a mitigation plan for Salesforce outages.

Have a checklist to notify users about an outage in a timely manner, explain how they should proceed without Salesforce and determine how you will push back any data that may have been drafted elsewhere during those hours of downtime.

Think about what a Salesforce outage means for your business and how you will mitigate the impact. If you have none - you have no idea what you're doing.

And this is not a unique outage.

Over the last few weeks, Revenue Cloud alone has suffered several significant problems. They obviously don't receive the same level of attention, but they prove exactly the same point: there are still plenty of dependencies and moving parts behind the scenes and we need to be prepared when one of them fails.

Andrii Sukhetskyi

Andrii Sukhetskyi

Worth Knowing

SOAP API login() Is Breaking in Winter ’27 | I Was Right

A few days ago, I published my theory that the retirement of the SOAP API login() method would start affecting existing integrations in the upcoming Winter ’27 release, not just Summer ’27 as most people were assuming.

You called me crazy. You said nobody was telling us that.

Well... Today, I confirmed it.

Existing integrations using SOAP API login() can no longer authenticate in Winter ’27 unless the user has a new permission called Use Any API Auth.

You can find it in a permission set by navigating to:

Permission Sets → System Permissions → Use Any API Auth

Any user trying to authenticate using SOAP API login() without this permission will be rejected with the following error:

INSUFFICIENT_ACCESS: SOAP API login() requires the Use Any API Auth user permission

How to Find Who Is Still Using SOAP API login()

Before assigning the permission to anyone, you first need to identify which integrations are still using login().

Go to: Setup → Login History

You can review the records there or download the login history as a CSV file.

Look for entries where:

  • Login Type is Other Apex API or Partner Product
  • Login Subtype is SOAP API
  • API Type is SOAP Enterprise, SOAP Partner or SOAP Tooling

Those entries represent applications authenticating through SOAP API login(). The Username tells you which Salesforce user is being used by the integration.

And don't be surprised if the Application field says N/A. That's expected. SOAP API login() isn't tied to a Connected App or External Client App, which is kind of the whole problem here.

If you need to investigate further, you can use the API Total Usage EventLogFile.

Look for events where:

  • API_FAMILY = SOAP
  • API_RESOURCE = login

The USER_NAME identifies the user, while CLIENT_NAME can help identify the actual application.

What You Should Do Before Winter ’27

Review your Login History and identify every user still authenticating through SOAP API login().

If you can't migrate those integrations just yet, create a dedicated permission set containing Use Any API Auth and assign it only to the users that actually need it.

That will keep those integrations alive through Winter ’27.

But don't get too comfortable with it. In Summer ’27, SOAP API login() in API versions 31.0 through 64.0 will be retired once and for all. At that point, there will be no permission you can assign and no checkbox you can enable to keep it alive a little longer.

Andrii Sukhetskyi

Andrii Sukhetskyi

Worth Knowing

SOAP API login() Retirement: I Think Everyone Has the Wrong Date

As you might know, Salesforce is retiring the SOAP API login() method that external systems use to authenticate into your Salesforce organization.

It's a legacy method that some of your systems might still be using to get into Salesforce, and considering it's an extremely dumb and insecure way of doing it (just a plain username and password), it's indeed a good decision to get rid of it.

This enforcement is scheduled for Summer '27 and will make API versions 31.0 through 64.0 unavailable, returning an error saying:

The Lord of the Rings | You Shall Not Pass

And before you scroll away, STOP. Maybe your organization will stop working already after Winter '27.

The existing Salesforce documentation, as of the second I'm writing this post, is extremely confusing (as always) and might give us a hint that starting Winter '27, your users must have a specific permission to keep the SOAP API login() method working until Summer '27.

YES, I KNOW, PLEASE BEAR WITH ME!

Winter '26 Release Notes

This is an older release, from last year.

Back in a day, Salesforce publishes a release note saying that all versions starting from 65.0 won't have the SOAP API login() method working at all.

Reference: SOAP API | Salesforce Help

So far it makes sense.

Summer '26 Release Notes

The release right before Winter '27. This summer. Salesforce introduced a new checkbox under User Interface named "Enable SOAP API login() to users with the Use Any API Auth user permission".

Setup | User Interface

Activate it, and the SOAP API login() method stops working for all users EXCEPT those who have the Use Any API Auth permission. That permission is also a new one, introduced in this very release.

Reference: Restrict Login Access to SOAP API | Salesforce Help

They allow us to do a round of testing.

Winter '27 Release Notes

And then in the upcoming Winter '27 release notes, I quote: "To authenticate with the SOAP API login() operation, all users must have the Use Any API Auth user permission assigned to them".

If my interpretation is correct, it means that all your SOAP API login() integrations will break not in Summer '27 as you all assume, but literally in a few weeks with Winter '27, unless you assign that permission.

You might say I am overreacting, but why would you then publish this release page in the first place? Like, the checkbox is there, the permission is there, there is nothing new unless you now enforce having this permission attached. Just look at the reference.

Reference: Assign Use Any API Auth Permission for SOAP login()

My detective conclusion

Winter '27 will break your SOAP API login() integrations and will give you a way to repair them quickly. The problem is, if it weren't for me, you would still be in for the downtime.

On that note, I recommend looking into this already today. To identify all SOAP API usage, you shall:

  • Look into your inbox. Salesforce must have sent you an email a couple of months ago saying that they identified that your org has been accessed using SOAP API login().
  • Go to Login History and look for "Other Apex API", "Partner Product" or "SOAP API". If any of these are present, you can track back the user and then see which integration is using this older authentication method.
Setup | Login History
  • Finally, verify that all your AppExchange packages are updated and not using those older authentication methods. This is really easy to overlook, as you usually don't think of it.

To help you communicate with other teams, share with them that their code most likely looks something like this:

ConnectorConfig config = new ConnectorConfig();

config.setUsername("integration@example.com");
config.setPassword("passwordSECURITY_TOKEN");
config.setAuthEndpoint("https://YourDomainName.my.salesforce.com/services/Soap/c/41.0/");

The idea behind such integrations is simple. If your external application is accessing Salesforce with a username and password only — that's bad. It's either SOAP API login() or OAuth username-password, both of which are on their way out as we speak.

I'll keep you updated once we get Winter '27 in our sandboxes and whether my detective masterpiece is truthful.

Andrii Sukhetskyi

Andrii Sukhetskyi

Gemini 2.5 Reroute: What Changes in Agentforce, Prompt Builder and Models API

While working with AI Agents, there is a popular saying: "Never trust one model to behave exactly like another".

This is my saying. It's not popular yet, but now it's destined to be.

On October 20, 2026, Google retires Gemini 2.5 Pro, 2.5 Flash, and 2.5 Flash-Lite. Salesforce documents the change in the Winter '27 release notes: requests to those models get rerouted automatically.

You should pay attention if you're using:

  • Agentforce agents or subagents with an Agent Script model_config pointing to one of the older Gemini 2.5 models.
  • Prompt Builder templates using Gemini 2.5.
  • Custom solutions using the Models API with Gemini 2.5.

If your org just runs the Salesforce Default model option for Agentforce, you're out of scope. This is about the places where somebody explicitly chose Gemini.

So if you're using any of these models, test your prompts and Agentforce behavior against the replacement models before the reroute. And if the results disappoint you – choose your own target instead of inheriting the default one.

For agents specifically, Salesforce calls out GPT 4.1, Claude Haiku 4.5 and Gemini 3.5 Flash as the models it has "thoroughly" tested.