sf-releaselens privacy policy
sf-releaselens is a read-only side panel for Salesforce release managers. Everything it does happens inside your own browser. The developer operates no server, receives no data from the extension, and cannot see what you do with it.
What the extension collects
Nothing is collected by the developer. The extension has no analytics, no crash or error reporting, and no telemetry that leaves the browser. The only network requests it can make are to Salesforce, and only after you connect an org: the login host you sign in through (login.salesforce.com, test.salesforce.com or your My Domain) for the OAuth token exchange, refresh and revocation, and the one org instance you connected for the read-only API calls. The connect form contains one link to the setup instructions on GitHub; nothing is fetched unless you click it.
What the extension stores in your browser
All storage is Chrome's extension storage for this extension, on the machine and browser profile where it is installed. Nothing is synchronised to another device or to any server.
| Data | Where | Written to disk? | Removed by |
|---|---|---|---|
| OAuth access token for the connected org | Service-worker memory only | No | Worker suspension, closing the browser, Disconnect |
| OAuth refresh token for the connected org | chrome.storage.session (memory-backed) | No | Closing the browser; an extension update, reload or disable; a refresh your org rejects; Disconnect |
| Consumer Key of the Connected App you created, and the deploy-window size you chose | chrome.storage.local | Yes | Uninstalling the extension. Disconnect keeps it so you can reconnect without retyping it. |
| Your local release snapshot (demo data, or data you imported) | chrome.storage.local | Yes | Start empty |
| Cached copy of data read from your org: release names, deploy ids, component names and paths, the display names of the users who ran each deployment, coverage figures | chrome.storage.local | Yes | Start empty while the org is connected, which replaces the cache with an empty snapshot. Disconnect does not remove it, so use Start empty first if nothing may remain on disk. Uninstalling the extension removes it. |
| Release name overlay (deploy id to name). This version has no screen that writes it, so it is normally absent. | chrome.storage.local | Yes | Uninstalling the extension |
| Telemetry opt-in flag and a random install id | chrome.storage.local | Only if you turn telemetry on | Turning telemetry off |
chrome.storage.local is not encrypted. The cached org data is deployment metadata, including the display names of the users who ran each deployment, and never a credential. Uninstalling the extension removes all of its storage, as Chrome does for any extension.
Authentication information
When you connect a Salesforce org, the extension runs an OAuth 2.0 authorization-code flow with PKCE against a Connected App that you create in your own org. The Consumer Key is a public identifier; there is no client secret, the connect form has no field for one, and the token requests never include one. The resulting access token and refresh token are held only as described in the table above, are sent only to Salesforce (the login host you chose, for refresh and revocation, and your own org instance, as the bearer token on API calls), and are never written to disk, transmitted anywhere else, or visible to the developer. Disconnect removes them from the browser and asks your org to revoke the refresh token.
What the extension reads from your org
It requests two OAuth scopes, api and refresh_token. The data it can read is only what the api scope allows for your own user; it cannot exceed your own permissions. In practice it reads the API versions your org offers, your org's API usage limits, the Organization record, the most recent DeployRequest records (ten by default, up to fifty if you press Load more) with the details of their components, a count of all DeployRequest records, and ApexCodeCoverageAggregate. It reads only when you press Refresh or Load more. It never creates, updates or deletes records or metadata in your org: the interface it uses to read org data has only GET and query operations; the only other requests it sends are the OAuth token exchange, refresh and revocation to the login host. The one thing it changes at Salesforce is the OAuth authorization created for your user when you sign in, which Disconnect asks the org to revoke.
Permissions
| Permission | Why |
|---|---|
storage | Holds the data listed above, locally. |
sidePanel | The whole user interface is a side panel. |
identity | Runs the OAuth sign-in window for your Connected App. Your Google account identity is never requested. |
https://*.salesforce.com/* (optional) | Requested only when you connect an org: the Salesforce login host, where the token exchange and token revocation endpoints are. |
https://*.my.salesforce.com/* (optional) | Requested only when you connect an org: your org instance, where the read-only API calls go. |
The extension has no content scripts and no tabs, activeTab, scripting, history, webNavigation, cookies or alarms permission. It cannot read the page you are on, your browsing history or your cookies, and it cannot run on a schedule.
Telemetry
The panel has an opt-in checkbox, off by default. If you turn it on, the extension would share a random install id, the extension version, the name of the event (that you turned telemetry on, or which of its three views you opened) and the time it happened, and nothing else. No endpoint is configured, so even when the checkbox is on, nothing is sent. Turning it off deletes the stored flag and id.
Files you import or export
Import reads a file you pick and stores its contents in the local snapshot. Export writes the snapshot to a file you save. Download diagnostics writes a report of versions, counts and storage sizes, with the org identified only by host pattern, to a file you save. All three stay on your machine.
Sharing and sale of data
The extension does not sell, transfer or share data with anyone. It has no third-party services. Data is used only for the extension's single purpose: showing you the state of Salesforce deployments and local approval sign-offs. The use of user data by sf-releaselens complies with the Chrome Web Store User Data Policy, including the Limited Use requirements.
Children
The extension is a developer tool and is not directed at children.
Changes to this policy
If a future version changes what the extension stores, reads or sends, the effective date at the top of this page will be updated and the release notes will say so before that version is published. This page is versioned with the extension's source code, so every change appears in the repository history with its date.
Contact
Source code, issues and private security reporting: github.com/muraliseelam/sf-releaselens. For a security concern, use the repository's Report a vulnerability button rather than a public issue.