You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6d8c34f
Browse filesBrowse the repository at this point in the historyBrowse files
feat(search): connect multiple accounts per integration (#9716)
* feat(search): connect multiple accounts per integration
Key managed OAuth credentials on the provider's subject and tenant instead of
one row per enrollment and option, so a member can connect several accounts of
any OAuth integration. Reconnect stays pinned to its account, disconnecting
frees the slot, and invitation links only refresh the existing account.
* feat(search): identify managed MCP accounts to allow several per connector
Read the signed-in account through each connector's documented identity tool
during OAuth completion and key connections on it, sharing one set of account
rules with OAuth providers. Notion, Granola, Fireflies, Coda, and HubSpot now
allow several accounts; connectors with no identity tool stay at one.
* fix(search): harden multiple accounts per integration
Enforce the account limit when reconnecting a disconnected account, keep GitHub
setup working when one linked account fails, and surface reconnect prompts over
disconnected accounts. Identify existing managed MCP connections from their
stored tokens so adding an account does not first require reconnecting.
* improvement(search): polish several-account UI and refresh Search on connect
Show accounts as accounts, surface Reconnect beside an account that needs it,
keep each disconnect clear about which account it removes, and hide Add account
in a single account's view. Connecting from any surface now refreshes what Search
can reach. Add browser coverage for several accounts and tighten the tests.
* fix(search): name per-account Reconnect buttons for assistive tech
The design system Button dropped aria-label, so several Reconnect buttons on one
page read the same. Restore the browser check for an app with connections
unavailable and shrink the test-types baseline after removing a duplicate test.
* fix(search): make the MCP identity migration replayable and close review gaps
Replace the managed MCP check in one atomic statement so an interrupted migration
can retry. Refuse to adopt an identity another connection holds, write the Search
receipt only for flows that read it, keep expired accounts labeled as such, and
refresh Search's account list on disconnect.
* fix(search): only read an MCP account email from text when it is labeled
An address in a non-JSON identity response now needs a label naming it as the
signed-in account, so an unrelated address is never stored as the identity, and
markdown, punctuation, and punycode domains no longer distort it.
* fix(search): keep existing connections unchanged and collapse to one migration
Combine the account migrations into one. Reuse a disconnected connection's id, let
a lone account reconnect when its identity tool fails, keep Find on the first
connected account, and refresh an expired account added again. Group People list
MCP summaries, tell same-email accounts apart, and version MCP attempts so an old
instance can't overwrite tokens during a deploy.
* fix(search): add the count to the People MCP summary type
* fix(search): keep a leading underscore in a labeled MCP account email
Copy file name to clipboardExpand all lines: apps/docs/content/docs/search/connect-your-account.mdx
+12-6Lines changed: 12 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,19 +10,25 @@ After your admin adds a source in **Settings → Sources**, connect your own acc
10
10
## Connect and verify
11
11
12
12
1. Join the Sim organization through its invitation or SSO. Use the verified email required by the provider connection.
13
-
2. Open **Integrations**, select the app, and choose **Connect** in its header.
14
-
3. Complete authorization in the new tab. If the popup is blocked, allow it and select **Connect** again.
13
+
2. Open **Integrations**, select the app, and choose the app's button under **Connect your account**.
14
+
3. Complete authorization in the new tab. If the popup is blocked, allow it and select the button again.
15
15
4. Return to **Search** or **Search → Assistant** and search for content your account can open. Read a result and follow its source link.
16
16
17
17
<Image
18
18
src="/static/search/connect-account-details.png"
19
-
alt="Coda integration details with Connect in the resource header and no account connected"
19
+
alt="Coda integration details with a connect button and no account connected"
20
20
width={1440}
21
21
height={1000}
22
22
variant="overview"
23
23
/>
24
24
25
-
Your organization currently supports one connected account per provider. Open the app to see that account's permissions and connection actions.
25
+
To connect another account of the same app, such as Google Drive for two different work accounts, open the app and choose **Add account**, then pick the other account when the provider asks. You can connect up to five accounts per app, and Search looks across all of them. Open an account to see its tool permissions when the app supports them; each account's menu has **Reconnect** and **Disconnect**.
26
+
27
+
- Slack accounts must belong to your organization's connected workspace.
28
+
- Zoom, Lucid, and Databricks allow one account, because Sim cannot yet tell their accounts apart.
29
+
- If the provider signs you straight back into a connected account, sign in to the other account with the provider first, then choose **Add account** again.
30
+
31
+
Reconnecting keeps the same account. To use a different one, add it as a new account or disconnect the old one first. If Sim asks you to reconnect before adding another account, it could not confirm which account an existing connection belongs to. Reconnect that one, then add the other. Your organization and the provider must allow each account to authorize Sim.
26
32
27
33
The connection is usable when authorization completes; no initial indexing run is required. If a provider is missing, ask an admin to add it in **Sources**. `Not configured` means its app or deployment setup needs an admin's attention.
28
34
@@ -33,7 +39,7 @@ You do not choose repositories, channels, labels, or an indexing method during p
33
39
| Source setup | Personal connection |
34
40
| --- | --- |
35
41
|**Member accounts**| Connect your own provider account. |
36
-
|**GitHub App**| Connect GitHub once per Sim organization. Each selected repository must be readable by you and the installation. |
42
+
|**GitHub App**| Connect one or more GitHub accounts. Each selected repository must be readable by you and the installation. |
37
43
| Google service account: Gmail, Calendar, Drive | Connect each corresponding Google service. The source verifies your identity and resource access through delegation. |
38
44
| Confluence service account | Connect Confluence. Both your account and the service connection must read the selected content. |
39
45
| Coda | Connect personal Coda MCP. Service mode also verifies the parent document with its REST token. |
@@ -46,7 +52,7 @@ Creating Jira sprints requires the Jira sprint permission. If your account was c
46
52
47
53
## Tool permissions
48
54
49
-
Open the app in **Integrations** and select your account. Tool permissions appear in its details when the app has supported Assistant tools available to you. Hover over or focus the info button beside a tool to read its description. Set a preference for each operation or use the **Read-only tools** and **Write tools** group controls:
55
+
Open the app in **Integrations**. If you connected several accounts, select one. Tool permissions appear in its details when the app has supported Assistant tools available to you. Hover over or focus the info button beside a tool to read its description. Set a preference for each operation or use the **Read-only tools** and **Write tools** group controls:
text={`Disconnect ${selected?.displayName??integrationName} from all ${integrationName} connections in this organization. Workflows using this account will also lose access. You can reconnect later.`}
113
+
text={`Disconnect ${selected?.displayName??integrationName} from this organization. Workflows using this account will also lose access. You can reconnect later.`}
- Use the Provider filter to narrow results to specific services (e.g. Gmail, Slack).
29
29
- Use "List Organization Accounts" with Providers selected and Email blank to discover all accessible accounts for those integrations.
30
30
- Organization lists return one page at a time. While hasMore is true, pass nextCursor as Cursor with the same filters to get every matching account.
31
-
- "Find Organization Account" requires an exact enrollment email and provider, and fails unless exactly one active account matches.
31
+
- "Find Organization Account" requires an exact enrollment email and provider, and returns that person's first connected account for the provider, or fails if there is none. Use "List Organization Accounts" to reach their other accounts.
32
32
- Outputs contain account identities and credential references, never secret values.
33
33
- To switch credentials across environments, replace the single Credential block rather than updating every downstream block.
0 commit comments