jirat.mee
07/07/2026, 7:31 AMkapa.ai
07/07/2026, 7:31 AMsource-salesforce connector discarded the new refresh token from the response, meaning the next sync would attempt to use an invalidated token — breaking the connection and requiring manual re-authentication. [GitHub Issue]
Salesforce Enforcement Timeline • May 11, 2026 — deadline for partner/external client apps to meet new security requirements (including RTR)
• June 25, 2026 — Salesforce begins technical enforcement; non-compliant apps may have interoperability suspended [GitHub Issue]
What Was Fixed A fix has been implemented in PR #80892:
• Salesforce.login() now captures the new refresh token from the token response when one is present.
• A new method _persist_rotated_refresh_token writes the rotated token back into the connector config and emits a CONNECTOR_CONFIG control message, covering check, discover, and read operations.
• This is non-breaking: if RTR is not enabled on your Salesforce Connected App, the new code path is a strict no-op. [RTR PR]
Known Limitations Even with the fix, two edge cases remain unresolved at the connector level:
1. Concurrent operations (e.g., a check and a sync running simultaneously) can race two rotations, potentially invalidating each other's tokens.
2. The pre-save "Test connection" cannot persist the rotated token (no actor ID yet at that point).
Both can be mitigated by configuring a refresh token rotation grace window on your Salesforce Connected App. [RTR PR]
Recommendation • Ensure you are running a version of source-salesforce that includes the RTR fix (from PR #80892).
• Configure a grace window for refresh token rotation on your Salesforce Connected App to handle the edge cases above.
• If you need headless/server-to-server authentication without refresh tokens entirely, the connector also now supports OAuth 2.0 JWT Bearer Token authentication as an alternative. [JWT PR] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.jirat.mee
07/07/2026, 8:02 AMkapa.ai
07/07/2026, 8:02 AMsource-salesforce. The fix captures the new refresh token returned by Salesforce on each token exchange and persists it back to the connector config via a CONNECTOR_CONFIG control message. This covers all three operations: check, discover, and read. [RTR PR]
2. Does Airbyte persist the newly rotated refresh token for the next refresh? Yes. The implementation works as follows:
• Salesforce.login() now captures the refresh_token from the token response when one is present.
• A new method _persist_rotated_refresh_token writes the rotated token back into the connector config and emits a CONNECTOR_CONFIG control message.
• The connector sidecar persists CONNECTOR_CONFIG control messages for all three operations (check, discover, read), double-gated on the config actually changing — so if the token hasn't changed, no message is emitted (idempotency).
• This is non-breaking: if RTR is not enabled on your Connected App, no new refresh token is returned and the new code path is a strict no-op. [RTR PR]
3. How does Airbyte handle concurrent sync jobs / parallel refresh attempts? This is a known limitation that is not fully resolved at the connector level. Two edge cases remain:
• Concurrent check and sync on the same source can race two rotations, where both attempts try to rotate the token simultaneously, potentially invalidating each other's token.
• The pre-save "Test connection" cannot persist the rotated token because there is no actor ID available at that point.
The recommended mitigation for both cases is to configure a refresh token rotation grace window on your Salesforce Connected App. This grace window allows a recently rotated (but not yet persisted) token to remain valid for a short period, reducing the risk of race conditions. [RTR PR]
4. What is the recommended workaround if RTR support is not yet available in your version? If you are running an older version of source-salesforce that does not include the RTR fix, you have two options:
1. Upgrade to a version of source-salesforce that includes the changes from PR #80892.
2. Use JWT Bearer Token authentication instead of the standard OAuth refresh token flow. This was added in PR #80784 and uses a signed RS256 JWT to obtain access tokens directly — no refresh token is involved at all, so RTR is entirely irrelevant. This is particularly suitable for server-to-server or CI/CD scenarios. [JWT PR]
Summary Table 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elementsjirat.mee
07/07/2026, 8:06 AMkapa.ai
07/07/2026, 8:06 AMsource-salesforce changelog or metadata.yaml to see if the fix is included in the latest published version.
2. Defer enabling RTR — If you have not yet enabled RTR on your Salesforce Connected App, you can continue using the standard OAuth refresh token flow without RTR enabled. The Salesforce enforcement deadline is June 25, 2026, so there may still be time to wait for the fix to be released. [GitHub Issue]
3. Contact Airbyte support — If you are on Airbyte Cloud, open a support ticket referencing issue #80783 to get an official timeline. For OSS, join the Airbyte Community Slack.
Bottom line If RTR is not yet enabled on your Connected App, standard OAuth should still work today. The integration is only effectively blocked if you have already enabled RTR and are running a connector version that does not include the fix from PR #80892. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.jirat.mee
07/07/2026, 10:28 AMkapa.ai
07/07/2026, 10:28 AMsource-salesforce connector, as it will fail once the first rotated token is discarded.
• Your integration is effectively blocked until either PR #80892 (RTR fix) is merged and released, or you can use the JWT Bearer Token flow once PR #80784/#80788 is merged and released.
What I'd recommend doing right now 1. Check the actual merge/release status of PR #80892 and PR #80784/#80788 immediately by visiting:
◦ github.com/airbytehq/airbyte/pull/80892
◦ github.com/airbytehq/airbyte/pull/80784
◦ github.com/airbytehq/airbyte/pull/80788
1. Contact Airbyte support urgently — since Salesforce has moved the enforcement earlier than the previously published June 25, 2026 deadline (at least for new External Client Apps), this changes the urgency significantly:
◦ Airbyte Cloud customers: open a support ticket referencing issue #80783
◦ OSS users: raise this in the Airbyte Community Slack
1. As a temporary workaround, check whether you can still create a classic Connected App (not an External Client App) in Salesforce, where RTR may not yet be mandatory. However, the knowledge sources do not confirm whether this is possible in your org, so you would need to verify this directly with Salesforce.
The knowledge sources do not contain information about Salesforce enforcing RTR as a non-optional setting on new External Client Apps, so I cannot provide further specific guidance beyond what is stated above. This appears to be a newer Salesforce policy change that goes beyond what was documented in the known enforcement timeline. [GitHub Issue] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.