Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.
A connection is a saved credential for one external service, such as an AWS account, a Kubernetes cluster, or a GitHub organization. Agents can only see and do what your connections allow, so this page covers how to add one, scope it, check it, and keep it healthy. The full list of services is in the connection catalog.
In the sidebar, click More → Workspace settings → Connections. The Builtin Connections tab lists every supported service. Filter by category or search by name. When a setup guide says “open Connections”, it means this screen.
Connections: pick a connection to see its discovery, settings, Allow writes switch and agents
2
Open the setup guide and follow its order
Open the setup guide for your service from the catalog, or click Setup guide on the service’s detail panel. Each guide lists the minimum permissions for the credential. The order depends on the service:
Service
Do this first
AWS
Open the connect dialog. It generates the External ID your role needs.
OAuth services, such as GitHub, Linear, and Sentry
Usually nothing: click Connect and sign in. A few need one-time setup first. Asana needs your own Asana app’s Client ID and secret, Atlassian needs an org admin to allow the CloudThinker domain, and Bitbucket asks for the workspace slug. See each guide.
Everything else, such as Google Cloud, Azure, Firebase, and Cloudflare
Create the credential at the provider, then open the dialog.
3
Connect
Select the service and click Connect. Enter or upload the credential and click Connect in the dialog.Services that support several accounts, such as AWS, Google Cloud, and SSH, also ask for an Alias (a short name like production) and a Description. Agents read the description to pick the right account, so make it specific: Production AWS account, us-east-1 workloads.
A service allows several connections only when its detail panel shows Supports multiple connections. Others, such as Microsoft Azure, Kubernetes, VMware vCenter, and every service you connect by OAuth sign-in, allow one connection per workspace. To connect a second Azure tenant or a second cluster, use a separate workspace.
4
Wait for the test
CloudThinker tests the connection before saving it. For most services the test calls the service with your credential. For some, such as Argo CD, Buildkite, CircleCI, Clarity, Databricks, Notion, Prowler, Render, and Rollbar, it only checks that the connection’s tool starts, so a wrong token can still show Connected. On those, the verify prompt in the setup guide is the real test.
Status
What it means
What to do
Connecting
The test is starting
Wait
Verifying
CloudThinker is calling the service with your credential
Wait
Connected
The test passed and the connection is saved. On services whose test doesn’t check the credential, it only means the tool started.
Run the guide’s verify prompt, then ask a question against it
Failed
The service rejected the credential. The provider’s error is shown.
Fix the credential or its permissions, then connect again
Each connection has an Environment: Production, Staging, Development, or Not set. It labels the connection for the people and agents who read it. Rules (conditions that decide whether an agent’s change runs, waits for a person, or is refused) don’t read it.
The connect dialog doesn’t ask for an environment, so set it right after you connect. Single-connection services, such as Microsoft Azure, and every OAuth service, such as GitHub, Linear, and Sentry, can’t be changed from Not set. To treat one connection differently from another, write a Rule that names that connection.
On a service that supports multiple connections, each account shows as a row on the service’s detail panel. To set the environment, click the pencil icon on the account’s row, and update Environment in the Edit Instance dialog.
The first time a connection reaches Connected, CloudThinker runs Discovery: one background investigation of the service you just connected. Results fill the Discovery section of the connection’s detail panel.
Result
What it is
What you can do
Evidence
Facts about how the service is set up, each citing the read that produced it
Review it to see what agents can reach
Related connection
A service that would make the evidence more useful
Click Connect on the card
Recurring check
A repeat of the check, suggested from the evidence
Discovery is often the first useful answer you get, so check it before you write your first prompt. It runs automatically once, for at most 30 minutes. You can rerun it with Run Discovery, for example after you widen the credential’s permissions. You need the workspace Admin role to rerun it.Discovery spends credits, and the cost depends on how much the service holds. It can’t use daily credits (the 100 free credits a day that cover chat on the Light model only), so it needs credits in the workspace balance. If the balance is too low, it pauses with a notice. Add credits, then click Run Discovery.Discovery uses the same tools and Approvals as a chat, but no one is there to answer, so it never waits for approval. A call that would ask a person is skipped, and Discovery carries on with the reads it can make. On Cloudflare and PostHog, where every API call goes through approvals, on Databricks and Neon, where every SQL statement does, and on Firebase, where project switches and deploy status checks do, Discovery finds less whenever those calls would ask a person.If Discovery hits its time limit, it ends as Partial discovery and keeps the results it already verified. If it verified nothing, it shows Discovery could not finish. Your connection keeps working either way.
Every connection belongs to one workspace. Anyone working in that workspace, including the built-in CloudThinker agent and your custom agents, can use it without setting it up again.
Workspace role
See connections
Add, edit, rotate, delete, rerun Discovery
Admin
Yes
Yes
Developer, Viewer
Yes
No
Organization Owners and Admins hold workspace Admin in every workspace. See Workspace roles.
On most connections that have it, Allow writes starts on. That includes AWS, Google Cloud, Azure, Kubernetes, GitHub, GitLab, Bitbucket, Azure DevOps, AWS CodeCommit, Cassandra, Drata, FortiGate, Okta, and Rootly. A few start off, such as Docker Hub, Fly.io, FireHydrant, and Snowflake. Argo CD has no toggle: its READ_ONLY field in the connect form starts on Full access. If the credential you connect has any write permission, agents can propose changes the moment you connect, and your Rules and Approval mode decide each one. There’s no workspace or organization setting to start it off, so the controls are a read-only credential and turning off Allow writes on each connection. Each setup guide’s Write access or Agent capabilities section says what its connection starts with.
Two controls decide what an agent can do with a connection:
The credential is the ceiling, Allow writes opens changes, and Rules and Approval mode settle each one, except on Connection setting, no approvals connections.
Control
Where it lives
What it decides
The credential’s own permissions
Your provider (IAM role, service account, API token scopes)
The ceiling. Agents can never do more than the credential allows.
Allow writes
The connection’s detail panel in CloudThinker
Off: agents can only read, and every change is refused. On: agents can propose changes, and your Rules and Approval mode settle each one. Manual asks a person before every write. The default, Auto · Rules + AI · Ask me, lets an Allow Rule or AI judgment approve a safe change and asks you about the rest. An Allow Rule decides only once CloudThinker turns on Rule enforcement for your workspace, so choose Manual until then.
How writes are controlled depends on the connection. Each setup guide’s Agent capabilities section says which model applies.
Write model
How it works
Default
Example
Allow writes toggle
Connections where agents run a command-line tool or script against the service. That covers the clouds and also script-based connections such as Bitbucket, Azure DevOps, Cassandra, Drata, and Docker Hub. The toggle is on the connection’s detail panel. Reads run without asking. With the toggle on, every write is checked against your Rules and Approval mode.
On for most, such as AWS, Google Cloud, Azure, Azure DevOps, Bitbucket, Cassandra, Drata, and Rootly. Off for a few, such as Docker Hub, Fly.io, FireHydrant, and Snowflake.
There’s no toggle. The credential’s scopes set what’s possible, and every change goes through Approvals. Some reads go through approvals too: every Cloudflare and PostHog API call, Neon and Databricks SQL statements (SELECT included), and Firebase project switches and deploy status checks.
A write setting in the connect form decides everything. With writes allowed, changes run with nobody asked, and your Rules and Approval mode never see them.
Read-only. ClickHouse’s Write access starts on Read-only (default).
A custom MCP connection has no Allow writes switch. CloudThinker sorts each tool the server serves into a read or a write: reads run without asking, and writes go through your Rules and Approval mode. A tool whose name contains a read word, such as get or check, counts as a read and runs without approval — get_and_delete_user included — unless the server marks it destructive.
Decided per tool, from the server’s own hints and tool names.
On a Connection setting, no approvals connection such as ClickHouse, turning writes on lets agents change data with no Rule or approval in the way. Use a read-only database user unless you want that.
Allow writes starts on for most connections because the credential is the ceiling: a read-only credential already blocks every change. Start read-only, and widen the credential only when you have a specific change you want agents to make.Connections sign in one of two ways:
Method
How you connect
Examples
Credentials you paste or upload
An IAM role ARN, an access key, a service-account JSON file, or an API token
AWS, Google Cloud, Datadog, PostgreSQL
OAuth sign-in
You sign in to the provider in a pop-up and approve access
Connections run from CloudThinker Cloud, so the service must accept connections from the internet. That matters for anything on a private network, such as an internal vCenter, PostgreSQL, Prometheus, or Argo CD.
Option
When to use it
Expose the endpoint and allowlist CloudThinker’s egress IPs
You can put the service behind a firewall rule. These docs don’t publish CloudThinker’s egress IP list: ask your CloudThinker contact, or contact us. Never expose a service with no authentication.
The service must stay private. A Worker is a folder on a machine you run where the agent can run commands. A Worker doesn’t make a connection private: workspace connections still run in CloudThinker Cloud, even in a Worker chat. Instead, install the service’s command-line tool (for example psql) and its credentials on the Worker machine, and the agent’s shell uses them there. The service won’t appear in More → Workspace settings → Connections. See What a Worker can reach. Workers are in beta.
You can replace a saved credential without disconnecting. The connection keeps its alias, settings, and history. AWS role connections use short-lived STS credentials, so there’s nothing to rotate: the External ID stays the same. Access keys, client secrets, JSON keys, and API tokens do need it.
1
Create the new credential at the provider
Create the new key or token first. Keep the old one active until the swap is done.
2
Replace it in CloudThinker
Open the service in More → Workspace settings → Connections, click the pencil icon on the account’s row, and in Edit Instance click Replace… next to the saved credentials. Enter the new values and click Save and test.Success state: the test passes and the connection stays Connected. If the test fails, CloudThinker keeps the previous credential and shows the error.
3
Revoke the old credential
Delete or deactivate the old key at the provider.
Single-connection services, such as Microsoft Azure and Backstage, have no pencil icon. Their Replace credentials button appears only while the connection shows Error, so to rotate early, disconnect and connect again with the new value. The exception is the token-based Git providers (GitLab, Bitbucket, Azure DevOps, and AWS CodeCommit): once Review is set up on them, rotate the token in Review → Settings → Connection actions → Update token, with no disconnect. See Azure DevOps and Bitbucket.A disconnect and reconnect starts a new connection, so plan it for a quiet period:
Agents, scheduled automations, and Optimize refreshes can’t use the service between the disconnect and the reconnect.
Discovery runs again and spends credits.
Allow writes goes back to its default, which is on for most connections. Turn it off again if you had it off.
Check that Rules naming the connection still list it.
Most OAuth connections don’t have a credential to replace. To switch the signed-in account, disconnect and connect again. Asana is the exception: it stores your Asana app’s Client secret, and you enter it again each time you reconnect.
If a credential stops working in the background (an expired token, a revoked key, a deleted role), the connection switches to Error. For AWS, that takes three background failures in a row, so one blip doesn’t trip it. Other connections switch when a background token refresh or a run hits an authentication failure. Workspace admins get one notification per outage, not one per failed retry. A test you run yourself never notifies anyone.While a connection shows Error, scheduled work that depends on it is skipped, including Optimize cost refreshes, scheduled automations, and Pulse alert polling.To recover:
Fix the cause at the provider, for example restore the role or issue a new key.
Open the connection. The detail panel shows the error. Click Retry to test the saved credential again, or Replace credentials to enter a new one. Replace credentials opens the same Edit Instance dialog as Replace…. For an OAuth connection, click Connect to sign in again.
When the status returns to Connected, scheduled work resumes on its next cycle.
Open the service in More → Workspace settings → Connections. On a service with account rows, click the trash icon on the account’s row. On a single-connection service, click Disconnect on the detail panel. Confirm in the Disconnect dialog. It can’t be undone.Agents lose access to the service as soon as the disconnect finishes. Then delete the role, key, or token at the provider, because disconnecting doesn’t remove it there.If you connect the service again, it’s a new connection:
Discovery runs again and spends credits.
Allow writes goes back to its default, and Environment goes back to Not set.
Rules match connections by Alias. Reuse the same Alias when you reconnect, and Rules that name the connection keep matching.
Least privilege — grant only the permissions the agents need for your use case; start read-only and widen later.
Read-only by default — use read-only credentials unless you want agents to make changes through this connection.
Rotate credentials — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.
Revoke on offboarding — remove the credential at the provider when you delete a connection or a teammate leaves.
A connection isn’t read-only on its own. Many start with Allow writes on (see How access works), so a read-only credential is what keeps a connection read-only.How CloudThinker handles what you connect:
Question
Answer
Where is the credential stored?
Encrypted at rest. It’s injected into the CloudThinker-managed sandbox only when a command runs, never sent to a Worker, and never shown back in chat.
Can data reach the model?
Yes. Anything the credential can read can reach the model, because command output is part of the conversation. Scope the credential to what agents need.
Is data used for training, and how long is it kept?
These docs don’t cover model-provider data terms. See Security for what they do cover, and ask for the rest in a vendor review.
What’s logged?
Audit Logs (Admin Settings → Audit Logs) records connections created, edited, retried, and deleted, credential replacements, and approval decisions, on the Scale and Enterprise plans. Flipping a connection’s Allow writes switch isn’t recorded there.
Are agent commands logged?
Each command an agent runs, and its output, stays in the chat’s history. The calls also land in the provider’s own audit log, such as AWS CloudTrail or Google Cloud Audit Logs.
See Security for encryption details, retention, and the model provider.
Add any tool or API that runs an MCP server. Set it up on the MCP Connections tab.
If a service isn’t listed, connect it as a custom MCP connection. MCP (Model Context Protocol) is an open standard for giving AI agents tools.Chat platforms are set up as workspace integrations, not connections: see Slack, Microsoft Teams, and Google Chat. Connecting GitHub, GitLab, Bitbucket, or Azure DevOps also powers Review.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CloudThinker","colors":{"primary":"#0c93c0","light":"#2897c1","dark":"#0c93c0"},"logo":{"light":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f","dark":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/dark.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=4252f33496bbaa527e5408338963a31e"},"favicon":"https://mintcdn.com/cloudthinker/PoYnb4baZ54aMMQW/favicon.ico?fit=max\u0026auto=format\u0026n=PoYnb4baZ54aMMQW\u0026q=85\u0026s=6570e99ed2a763d9632c8f933fe9c164","background":{"color":{"light":"#eef0f3","dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.com/invite/sRBWRWtaNR","label":"Community"},{"href":"https://cloudthinker.io/blogs","label":"Blog"},{"href":"https://cloudthinker.io/contact","label":"Contact us"}],"primary":{"type":"button","label":"Open app","href":"https://app.cloudthinker.io"}},"footer":{"socials":{"x":"https://x.com/cloudthinkerio?s=21","linkedin":"https://www.linkedin.com/company/cloud-thinker","github":"https://github.com/cloudthinker-ai","discord":"https://discord.com/invite/sRBWRWtaNR","youtube":"https://www.youtube.com/@cloudthinkerai"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Poppins"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"vi","href":"vi"},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudthinker","hasAudioNarration":false,"actualSubdomain":"cloudthinker","customDomains":["docs.cloudthinker.io"],"gitSource":{"type":"github","owner":"nhat-tranvan","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{},"buildId":"6aedcff05d34814a8f5a3fdf","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"vi","tag":"Nền tảng","count":130},{"language":"vi","tag":"Kết nối","count":100},{"language":"default","tag":"Platform","count":71},{"language":"en","tag":"Platform","count":64},{"language":"ja","tag":"プラットフォーム","count":63},{"language":"ko","tag":"플랫폼","count":63},{"language":"default","tag":"Connections","count":55},{"language":"vi","tag":"Sản phẩm","count":54},{"language":"en","tag":"Connections","count":50},{"language":"ja","tag":"接続","count":48},{"language":"ko","tag":"연결","count":48},{"language":"vi","tag":"Tài nguyên","count":39},{"language":"default","tag":"Products","count":33},{"language":"vi","tag":"Học","count":30},{"language":"en","tag":"Products","count":29},{"language":"ja","tag":"プロダクト","count":29},{"language":"ko","tag":"제품","count":29},{"language":"default","tag":"Resources","count":26},{"language":"vi","tag":"Bắt đầu","count":26},{"language":"vi","tag":"Observability \u0026 Monitoring","count":24},{"language":"vi","tag":"Resolve","count":20},{"language":"default","tag":"Learn","count":18},{"language":"default","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"vi","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"en","tag":"Get started","count":16},{"language":"ja","tag":"はじめに","count":16},{"language":"ko","tag":"시작하기","count":16},{"language":"vi","tag":"Databases","count":16},{"language":"default","tag":"Review","count":13},{"language":"en","tag":"Resources","count":13},{"language":"ja","tag":"リソース","count":13},{"language":"ko","tag":"리소스","count":13},{"language":"en","tag":"Monitoring","count":12},{"language":"en","tag":"Learn","count":12},{"language":"en","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ja","tag":"Observability \u0026 Monitoring","count":12},{"language":"ja","tag":"学ぶ","count":12},{"language":"ja","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ko","tag":"Observability \u0026 Monitoring","count":12},{"language":"ko","tag":"배우기","count":12},{"language":"ko","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"default","tag":"Get started","count":11},{"language":"en","tag":"Resolve","count":11},{"language":"ja","tag":"Resolve","count":11},{"language":"ko","tag":"Resolve","count":11},{"language":"default","tag":"Resolve","count":9},{"language":"en","tag":"Enterprise","count":9},{"language":"default","tag":"Set up","count":8},{"language":"ja","tag":"Databases","count":8},{"language":"ko","tag":"Databases","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"a.ct-featured{display:block;margin:1.25rem 0 1rem;padding:1.75rem 1.75rem 1.5rem;border:1px solid rgba(12, 147, 192, 0.45)!important;border-radius:16px;background:radial-gradient(120% 160% at 0% 0%, rgba(12, 147, 192, 0.14), transparent 55%),\n #ffffff;box-shadow:0 12px 32px -16px rgba(12, 147, 192, 0.45);text-decoration:none!important;transition:border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease}a.ct-featured:hover{border-color:#0c93c0!important;transform:translateY(-1px);box-shadow:0 16px 40px -16px rgba(12, 147, 192, 0.6)}.dark a.ct-featured{border-color:rgba(40, 151, 193, 0.45)!important;background:radial-gradient(120% 160% at 0% 0%, rgba(40, 151, 193, 0.16), transparent 55%),\n #05070a;box-shadow:0 12px 32px -16px rgba(40, 151, 193, 0.35)}.dark a.ct-featured:hover{border-color:#2897c1!important}.ct-featured-head{display:flex;align-items:center;gap:0.75rem;margin-bottom:0.875rem}.ct-featured-icon{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(12, 147, 192, 0.12);color:#0a7aa0}.dark .ct-featured-icon{background:rgba(40, 151, 193, 0.14);color:#5bb8e0}.ct-eyebrow{font-size:0.75rem;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#0a7aa0}.dark .ct-eyebrow{color:#5bb8e0}.ct-title{font-size:1.375rem;font-weight:600;line-height:1.3;color:#0b1a2b}.dark .ct-title{color:#f5f5f7}.ct-body{margin:0.5rem 0 0!important;font-weight:400!important;font-size:1rem;max-width:46rem;color:#5b6577;line-height:1.6}.dark .ct-body{color:#a1a1a6}.ct-cta{display:inline-block;margin-top:1rem;font-weight:600;color:#0a7aa0}.dark .ct-cta{color:#5bb8e0}.ct-illustration{margin:1.5rem 0}.ct-illustration img{display:block;width:100%;max-width:720px;height:auto;margin:0 auto}.ct-iso-scene{margin:1.5rem 0 2rem;border:1px solid rgba(12, 147, 192, 0.18);border-radius:16px;background:#ffffff;overflow:hidden}.dark .ct-iso-scene{border-color:rgba(40, 151, 193, 0.22);background:#000000}.ct-iso-scene .ct-iso-svg{display:block;width:100%;height:auto}.ct-landing{max-width:1120px;margin:0 auto;padding:3rem 1.5rem 5rem}.ct-landing a{text-decoration:none!important;border-bottom-width:0}.ct-kicker{font-size:0.8125rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#0c93c0}.dark .ct-kicker{color:#2897c1}.ct-hero{text-align:center;padding:1.5rem 0 1rem}.ct-hero h1{margin:0.75rem 0 0;font-size:clamp(2.25rem, 5vw, 3.75rem);line-height:1.05;font-weight:600;letter-spacing:-0.03em}.ct-hero .ct-promise{margin:1rem auto 0;font-size:clamp(1.125rem, 2.2vw, 1.5rem);color:#5b6577}.dark .ct-hero .ct-promise{color:#a1a1a6}.ct-hero .ct-promise strong{color:#0c93c0;font-weight:600}.dark .ct-hero .ct-promise strong{color:#2897c1}.ct-hero p.ct-lead{max-width:44rem;margin:1rem auto 0;font-size:1.0625rem;line-height:1.65;color:#5b6577}.dark .ct-hero p.ct-lead{color:#a1a1a6}.ct-actions{display:flex;flex-wrap:wrap;gap:0.75rem;justify-content:center;margin-top:1.75rem}.ct-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.7rem 1.25rem;border-radius:999px;font-weight:600;font-size:0.95rem;transition:transform .15s ease, background .15s ease}.ct-btn:hover{transform:translateY(-1px)}.ct-btn-primary{background:#0c93c0;color:#fff!important}.ct-btn-primary:hover{background:#0a7aa0}.ct-btn-ghost{border:1px solid rgba(12, 147, 192, 0.35)!important;color:#0b1a2b!important}.dark .ct-btn-ghost{color:#f5f5f7!important;border-color:rgba(40, 151, 193, 0.4)!important}.ct-landing .ct-iso-scene{margin-top:2.5rem}.ct-section{margin-top:4.5rem}.ct-section>h2{margin:0.4rem 0 0;font-size:1.75rem;font-weight:600;letter-spacing:-0.02em}.ct-section>p.ct-section-lead{margin:0.5rem 0 0;color:#5b6577;max-width:46rem}.dark .ct-section>p.ct-section-lead{color:#a1a1a6}.ct-steps{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:1rem;margin-top:1.5rem}.ct-step{display:block;padding:1.25rem;border-radius:14px;border:1px solid rgba(12, 147, 192, 0.18)!important;background:#fff;transition:border-color .15s ease, transform .15s ease}.dark .ct-step{background:#05070a;border-color:rgba(40, 151, 193, 0.22)!important}.ct-step:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-step-num{display:inline-flex;width:1.75rem;height:1.75rem;border-radius:999px;align-items:center;justify-content:center;font-size:0.85rem;font-weight:700;color:#fff;background:#0c93c0}.ct-step h3,.ct-card h3{margin:0.75rem 0 0.25rem;font-size:1.05rem;font-weight:600;color:#0b1a2b}.dark .ct-step h3,.dark .ct-card h3{color:#f5f5f7}.ct-step p,.ct-card p{margin:0;font-size:0.925rem;line-height:1.55;color:#5b6577}.dark .ct-step p,.dark .ct-card p{color:#a1a1a6}.ct-grid{display:grid;gap:1rem;margin-top:1.5rem}.ct-grid-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.ct-grid-5{grid-template-columns:repeat(5, minmax(0, 1fr))}.ct-card{display:flex;flex-direction:column;padding:1.25rem;border-radius:14px;border:1px solid rgba(12, 147, 192, 0.18);background:#fff}.dark .ct-card{background:#05070a;border-color:rgba(40, 151, 193, 0.22)}.ct-card .ct-card-head{display:flex;align-items:center;gap:0.6rem}.ct-card .ct-card-head span{font-weight:600;color:#0b1a2b}.dark .ct-card .ct-card-head span{color:#f5f5f7}.ct-card .ct-tagline{margin-top:0.75rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:#0c93c0}.dark .ct-card .ct-tagline{color:#2897c1}.ct-card .ct-links{margin-top:auto;padding-top:1rem;display:flex;gap:1rem;font-size:0.9rem;font-weight:600}.ct-card .ct-links a{color:#0c93c0!important}.dark .ct-card .ct-links a{color:#2897c1!important}a.ct-card{transition:border-color .15s ease, transform .15s ease}a.ct-card:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-strip{display:flex;flex-wrap:wrap;gap:0.6rem;margin-top:1.25rem}.ct-strip a{display:inline-flex;align-items:center;gap:0.45rem;padding:0.55rem 0.95rem;border-radius:999px;border:1px solid rgba(12, 147, 192, 0.25)!important;font-size:0.9rem;font-weight:500;color:#0b1a2b!important}.dark .ct-strip a{color:#f5f5f7!important;border-color:rgba(40, 151, 193, 0.3)!important}.ct-strip a:hover{border-color:#0c93c0!important}@media (max-width: 900px){.ct-steps,.ct-grid-3,.ct-grid-5{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (max-width: 560px){.ct-landing{padding:2rem 1rem 4rem}.ct-steps,.ct-grid-3,.ct-grid-5{grid-template-columns:minmax(0, 1fr)}}.ct-hero h1{color:#0b1a2b;-webkit-text-fill-color:currentColor;background:none}.dark .ct-hero h1{color:#f5f5f7}.ct-landing table{width:100%;margin-top:1.25rem;border-collapse:collapse;font-size:0.925rem}.ct-landing th{text-align:left;font-weight:600;padding:0.7rem 0.9rem;border-bottom:1px solid rgba(12, 147, 192, 0.3)}.ct-landing td{vertical-align:top;padding:0.8rem 0.9rem;border-bottom:1px solid rgba(12, 147, 192, 0.12);color:#5b6577;line-height:1.55}.dark .ct-landing td{color:#a1a1a6}.ct-landing td:first-child{font-weight:600;color:#0b1a2b;width:22%}.dark .ct-landing td:first-child{color:#f5f5f7}.ct-landing td a{color:#0c93c0!important;font-weight:600}.dark .ct-landing td a{color:#2897c1!important}.ct-section>h2{color:#0b1a2b;-webkit-text-fill-color:currentColor;background:none}.dark .ct-section>h2{color:#f5f5f7}.ct-product{padding:1.1rem 1.2rem}.ct-product .ct-tagline{margin-top:0.55rem;font-size:1rem}.ct-product p{margin-top:0.3rem}.ct-powered{margin-top:0.6rem;font-size:0.75rem;font-weight:600;letter-spacing:0.02em;color:#8a94a6}.dark .ct-powered{color:#86868b}.ct-card-head .ct-arrow{margin-left:auto;font-weight:500!important;color:#0c93c0!important;transition:transform .15s ease}.dark .ct-card-head .ct-arrow{color:#2897c1!important}a.ct-product:hover .ct-arrow{transform:translateX(3px)}html:not(.dark) .ct-step,html:not(.dark) .ct-card,html:not(.dark) .ct-iso-scene{background:#f6f7f9}html:not(.dark) .ct-iso-scene{border-color:rgba(12, 147, 192, 0.12)}html:not(.dark) body{color:#2b3240}html:not(.dark) #content-area,html:not(.dark) .prose{color:#2b3240}html:not(.dark) .prose :where(h1,h2,h3,h4,strong){color:#1c2230}html:not(.dark) .ct-hero h1,html:not(.dark) .ct-section>h2,html:not(.dark) .ct-step h3,html:not(.dark) .ct-card h3,html:not(.dark) .ct-card .ct-card-head span{color:#1c2230}"}],"page":{"pagePath":"guide/connections/overview","slug":"/guide/connections/overview","pageMetadata":{"title":"Connections","description":"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.","icon":"plug","href":"/guide/connections/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A connection is a saved credential for one external service, such as an AWS account, a Kubernetes cluster, or a GitHub organization. Agents can only see and do what your connections allow, so this page covers how to add one, scope it, check it, and keep it healthy. The full list of services is in the `,_jsx(_components.a,{href:`#connection-catalog`,children:`connection catalog`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`add-a-connection`,children:`Add a connection`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open Connections`,children:[_jsxs(_components.p,{children:[`In the sidebar, click `,_jsx(_components.strong,{children:`More → Workspace settings → Connections`}),`. The `,_jsx(_components.strong,{children:`Builtin Connections`}),` tab lists every supported service. Filter by category or search by name. When a setup guide says “open Connections”, it means this screen.`]}),_jsx(Frame,{caption:`Connections: pick a connection to see its discovery, settings, Allow writes switch and agents`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=d82bd6ca7fadcea8d2254d9798f0354b`,alt:`Connections screen with the service list on the left and a selected connection's detail panel on the right`,\"data-og-width\":`2176`,width:`2176`,\"data-og-height\":`1800`,height:`1800`,\"data-path\":`images/v2/connections-list.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=280\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=efaceafedff93204aa0bbcd8f7c2c253 280w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=560\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=82cb21419d4350689e87b01d09697aeb 560w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=840\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=dfd881bf61046ee3804f474b5ba6389c 840w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=27d7f8f865e5dc1f37bf98558fe37480 1100w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=63b479759cf4d67e78c5a2533feb3114 1650w, https://mintcdn.com/cloudthinker/7N5Axt6gSxkmeWiW/images/v2/connections-list.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=7N5Axt6gSxkmeWiW\u0026q=85\u0026s=8d15ae2e7f02595ef04f6d8082af3443 2500w`})})]}),_jsxs(Step,{title:`Open the setup guide and follow its order`,children:[_jsxs(_components.p,{children:[`Open the setup guide for your service from the `,_jsx(_components.a,{href:`#connection-catalog`,children:`catalog`}),`, or click `,_jsx(_components.strong,{children:`Setup guide`}),` on the service’s detail panel. Each guide lists the minimum permissions for the credential. The order depends on the service:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`Do this first`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`AWS`}),_jsx(_components.td,{children:`Open the connect dialog. It generates the External ID your role needs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`OAuth services, such as GitHub, Linear, and Sentry`}),_jsxs(_components.td,{children:[`Usually nothing: click `,_jsx(_components.strong,{children:`Connect`}),` and sign in. A few need one-time setup first. Asana needs your own Asana app’s Client ID and secret, Atlassian needs an org admin to allow the CloudThinker domain, and Bitbucket asks for the workspace slug. See each guide.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Everything else, such as Google Cloud, Azure, Firebase, and Cloudflare`}),_jsx(_components.td,{children:`Create the credential at the provider, then open the dialog.`})]})]})]})]}),_jsxs(Step,{title:`Connect`,children:[_jsxs(_components.p,{children:[`Select the service and click `,_jsx(_components.strong,{children:`Connect`}),`. Enter or upload the credential and click `,_jsx(_components.strong,{children:`Connect`}),` in the dialog.`]}),_jsxs(_components.p,{children:[`Services that support several accounts, such as AWS, Google Cloud, and SSH, also ask for an `,_jsx(_components.strong,{children:`Alias`}),` (a short name like `,_jsx(_components.code,{children:`production`}),`) and a `,_jsx(_components.strong,{children:`Description`}),`. Agents read the description to pick the right account, so make it specific: `,_jsx(_components.code,{children:`Production AWS account, us-east-1 workloads`}),`.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`A service allows several connections only when its detail panel shows `,_jsx(_components.strong,{children:`Supports multiple connections`}),`. Others, such as Microsoft Azure, Kubernetes, VMware vCenter, and every service you connect by OAuth sign-in, allow one connection per workspace. To connect a second Azure tenant or a second cluster, use a separate workspace.`]})})]}),_jsxs(Step,{title:`Wait for the test`,children:[_jsxs(_components.p,{children:[`CloudThinker tests the connection before saving it. For most services the test calls the service with your credential. For some, such as Argo CD, Buildkite, CircleCI, Clarity, Databricks, `,_jsx(_components.a,{href:`/guide/connections/notion`,children:`Notion`}),`, `,_jsx(_components.a,{href:`/guide/connections/prowler`,children:`Prowler`}),`, `,_jsx(_components.a,{href:`/guide/connections/render`,children:`Render`}),`, and `,_jsx(_components.a,{href:`/guide/connections/rollbar`,children:`Rollbar`}),`, it only checks that the connection’s tool starts, so a wrong token can still show `,_jsx(_components.strong,{children:`Connected`}),`. On those, the verify prompt in the setup guide is the real test.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`What to do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connecting`})}),_jsx(_components.td,{children:`The test is starting`}),_jsx(_components.td,{children:`Wait`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Verifying`})}),_jsx(_components.td,{children:`CloudThinker is calling the service with your credential`}),_jsx(_components.td,{children:`Wait`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connected`})}),_jsx(_components.td,{children:`The test passed and the connection is saved. On services whose test doesn’t check the credential, it only means the tool started.`}),_jsx(_components.td,{children:`Run the guide’s verify prompt, then ask a question against it`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Failed`})}),_jsx(_components.td,{children:`The service rejected the credential. The provider’s error is shown.`}),_jsx(_components.td,{children:`Fix the credential or its permissions, then connect again`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Timed out`})}),_jsx(_components.td,{children:`The test didn’t finish in time`}),_jsxs(_components.td,{children:[`Check the service is reachable from CloudThinker Cloud. See `,_jsx(_components.a,{href:`#reaching-private-services`,children:`Reaching private services`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Error`})}),_jsx(_components.td,{children:`It worked before, then failed in the background`}),_jsxs(_components.td,{children:[`See `,_jsx(_components.a,{href:`#when-a-connection-breaks`,children:`When a connection breaks`})]})]})]})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the service shows `,_jsx(_components.strong,{children:`Connected`}),` in the Connections list.`]})]}),_jsxs(Step,{title:`Ask a question against it`,children:[_jsx(_components.p,{children:`Open a chat and ask something only that service can answer. Each setup guide has a verification prompt.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Which AWS account and regions can you reach through my connection?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the answer names your real account ID or project, not a generic explanation.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`set-the-environment`,children:`Set the environment`}),`\n`,_jsxs(_components.p,{children:[`Each connection has an `,_jsx(_components.strong,{children:`Environment`}),`: `,_jsx(_components.strong,{children:`Production`}),`, `,_jsx(_components.strong,{children:`Staging`}),`, `,_jsx(_components.strong,{children:`Development`}),`, or `,_jsx(_components.strong,{children:`Not set`}),`. It labels the connection for the people and agents who read it. `,_jsx(_components.a,{href:`/guide/approvals/rules`,children:`Rules`}),` (conditions that decide whether an agent’s change runs, waits for a person, or is refused) don’t read it.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The connect dialog doesn’t ask for an environment, so set it right after you connect. Single-connection services, such as Microsoft Azure, and every OAuth service, such as GitHub, Linear, and Sentry, can’t be changed from `,_jsx(_components.strong,{children:`Not set`}),`. To treat one connection differently from another, write a `,_jsx(_components.a,{href:`/guide/approvals/rules#what-a-rule-contains`,children:`Rule`}),` that names that connection.`]})}),`\n`,_jsxs(_components.p,{children:[`On a service that supports multiple connections, each account shows as a row on the service’s detail panel. To set the environment, click the pencil icon on the account’s row, and update `,_jsx(_components.strong,{children:`Environment`}),` in the `,_jsx(_components.strong,{children:`Edit Instance`}),` dialog.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-happens-after-you-connect`,children:`What happens after you connect`}),`\n`,_jsxs(_components.p,{children:[`The first time a connection reaches `,_jsx(_components.strong,{children:`Connected`}),`, CloudThinker runs `,_jsx(_components.strong,{children:`Discovery`}),`: one background investigation of the service you just connected. Results fill the `,_jsx(_components.strong,{children:`Discovery`}),` section of the connection’s detail panel.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Result`}),_jsx(_components.th,{children:`What it is`}),_jsx(_components.th,{children:`What you can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Evidence`}),_jsx(_components.td,{children:`Facts about how the service is set up, each citing the read that produced it`}),_jsx(_components.td,{children:`Review it to see what agents can reach`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Related connection`}),_jsx(_components.td,{children:`A service that would make the evidence more useful`}),_jsxs(_components.td,{children:[`Click `,_jsx(_components.strong,{children:`Connect`}),` on the card`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Recurring check`}),_jsx(_components.td,{children:`A repeat of the check, suggested from the evidence`}),_jsxs(_components.td,{children:[`Click `,_jsx(_components.strong,{children:`Schedule`}),` to create an `,_jsx(_components.a,{href:`/guide/automation/automations`,children:`automation`})]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Discovery is often the first useful answer you get, so check it before you write your first prompt. It runs automatically once, for at most 30 minutes. You can rerun it with `,_jsx(_components.strong,{children:`Run Discovery`}),`, for example after you widen the credential’s permissions. You need the workspace Admin role to rerun it.`]}),`\n`,_jsxs(_components.p,{children:[`Discovery spends credits, and the cost depends on how much the service holds. It can’t use `,_jsx(_components.a,{href:`/guide/billing/usage#credit-types`,children:`daily credits`}),` (the 100 free credits a day that cover chat on the `,_jsx(_components.a,{href:`/guide/billing/usage#what-makes-a-run-cost-more`,children:`Light model`}),` only), so it needs credits in the workspace balance. If the balance is too low, it pauses with a notice. Add credits, then click `,_jsx(_components.strong,{children:`Run Discovery`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Discovery uses the same tools and `,_jsx(_components.a,{href:`/guide/approvals/overview`,children:`Approvals`}),` as a chat, but no one is there to answer, so it never waits for approval. A call that would ask a person is skipped, and Discovery carries on with the reads it can make. On Cloudflare and PostHog, where every API call goes through approvals, on Databricks and Neon, where every SQL statement does, and on Firebase, where project switches and deploy status checks do, Discovery finds less whenever those calls would ask a person.`]}),`\n`,_jsxs(_components.p,{children:[`If Discovery hits its time limit, it ends as `,_jsx(_components.strong,{children:`Partial discovery`}),` and keeps the results it already verified. If it verified nothing, it shows `,_jsx(_components.strong,{children:`Discovery could not finish`}),`. Your connection keeps working either way.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-access-works`,children:`How access works`}),`\n`,_jsxs(_components.p,{children:[`Every connection belongs to one `,_jsx(_components.a,{href:`/guide/workspaces`,children:`workspace`}),`. Anyone working in that workspace, including the built-in `,_jsx(_components.a,{href:`/guide/agents/overview`,children:`CloudThinker agent`}),` and your custom agents, can use it without setting it up again.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Workspace role`}),_jsx(_components.th,{children:`See connections`}),_jsx(_components.th,{children:`Add, edit, rotate, delete, rerun Discovery`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Admin`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Developer, Viewer`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`No`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Organization Owners and Admins hold workspace Admin in every workspace. See `,_jsx(_components.a,{href:`/guide/workspace-users#workspace-roles`,children:`Workspace roles`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`On most connections that have it, `,_jsx(_components.strong,{children:`Allow writes`}),` starts on. That includes AWS, Google Cloud, Azure, Kubernetes, GitHub, GitLab, Bitbucket, Azure DevOps, AWS CodeCommit, Cassandra, Drata, FortiGate, Okta, and Rootly. A few start off, such as Docker Hub, Fly.io, FireHydrant, and Snowflake. Argo CD has no toggle: its `,_jsx(_components.strong,{children:`READ_ONLY`}),` field in the connect form starts on `,_jsx(_components.strong,{children:`Full access`}),`. If the credential you connect has any write permission, agents can propose changes the moment you connect, and your Rules and Approval mode decide each one. There’s no workspace or organization setting to start it off, so the controls are a read-only credential and turning off `,_jsx(_components.strong,{children:`Allow writes`}),` on each connection. Each setup guide’s `,_jsx(_components.strong,{children:`Write access`}),` or `,_jsx(_components.strong,{children:`Agent capabilities`}),` section says what its connection starts with.`]})}),`\n`,_jsx(_components.p,{children:`Two controls decide what an agent can do with a connection:`}),`\n`,_jsxs(Frame,{caption:`The credential is the ceiling, Allow writes opens changes, and Rules and Approval mode settle each one, except on Connection setting, no approvals connections.`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=8ae6ebd77f764ddaac164f8c4e249a89`,alt:`Nested limits: the credential's permissions contain Allow writes, which contains Rules and Approval mode; ClickHouse-style connections skip Rules and Approval mode.`,className:`mint-block dark:mint-hidden`,style:{width:`100%`},\"data-og-width\":`800`,width:`800`,\"data-og-height\":`380`,height:`380`,\"data-path\":`images/connections/diagram-access-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=fd5619ebd81934c589df06b6bc4cf5df 280w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=ab3d3f601340e75b847892cdf2ef0627 560w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=50ff73bd688da8722f6d951db257c1a2 840w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=abbbfdf2755d3fd70325d0d9b8a6de9b 1100w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=a9faa01cca7aedcae1e5f6e4ad8462c6 1650w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=a0bd0a17e19c4fb6735ea21d6279a840 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=09d4e161e51db328ac6da3fbcfcaa18c`,alt:`Nested limits: the credential's permissions contain Allow writes, which contains Rules and Approval mode; ClickHouse-style connections skip Rules and Approval mode.`,className:`mint-hidden dark:mint-block`,style:{width:`100%`},\"data-og-width\":`800`,width:`800`,\"data-og-height\":`380`,height:`380`,\"data-path\":`images/connections/diagram-access-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=4fa57c30c88fb30b12f6e1c77fcf117a 280w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=0fdafe43545260243392337d59d06374 560w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=a802be1606b50b96c18be48f371f0e5b 840w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=9ce6c60488363c4e57c96cb751ea8b5c 1100w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=8f6621c7c337038dd17c07bc71b17f22 1650w, https://mintcdn.com/cloudthinker/IOnNsZPtwT4C7tHY/images/connections/diagram-access-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=IOnNsZPtwT4C7tHY\u0026q=85\u0026s=bdda45b235edfaf199d8ca18d4ede60b 2500w`})]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Control`}),_jsx(_components.th,{children:`Where it lives`}),_jsx(_components.th,{children:`What it decides`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`The credential’s own permissions`}),_jsx(_components.td,{children:`Your provider (IAM role, service account, API token scopes)`}),_jsx(_components.td,{children:`The ceiling. Agents can never do more than the credential allows.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Allow writes`})}),_jsx(_components.td,{children:`The connection’s detail panel in CloudThinker`}),_jsxs(_components.td,{children:[`Off: agents can only read, and every change is refused. On: agents can propose changes, and your `,_jsx(_components.a,{href:`/guide/approvals/rules`,children:`Rules`}),` and `,_jsx(_components.a,{href:`/guide/approvals/approval-mode`,children:`Approval mode`}),` settle each one. `,_jsx(_components.strong,{children:`Manual`}),` asks a person before every write. The default, `,_jsx(_components.strong,{children:`Auto · Rules + AI · Ask me`}),`, lets an Allow Rule or AI judgment approve a safe change and asks you about the rest. An Allow Rule decides only once CloudThinker turns on `,_jsx(_components.a,{href:`/guide/approvals/rules#troubleshooting`,children:`Rule enforcement`}),` for your workspace, so choose `,_jsx(_components.strong,{children:`Manual`}),` until then.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`How writes are controlled depends on the connection. Each setup guide’s `,_jsx(_components.strong,{children:`Agent capabilities`}),` section says which model applies.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Write model`}),_jsx(_components.th,{children:`How it works`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Allow writes`}),` toggle`]}),_jsx(_components.td,{children:`Connections where agents run a command-line tool or script against the service. That covers the clouds and also script-based connections such as Bitbucket, Azure DevOps, Cassandra, Drata, and Docker Hub. The toggle is on the connection’s detail panel. Reads run without asking. With the toggle on, every write is checked against your Rules and Approval mode.`}),_jsx(_components.td,{children:`On for most, such as AWS, Google Cloud, Azure, Azure DevOps, Bitbucket, Cassandra, Drata, and Rootly. Off for a few, such as Docker Hub, Fly.io, FireHydrant, and Snowflake.`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/guide/connections/aws`,children:`AWS`}),`, `,_jsx(_components.a,{href:`/guide/connections/gcp`,children:`Google Cloud`}),`, `,_jsx(_components.a,{href:`/guide/connections/azure`,children:`Azure`}),`, `,_jsx(_components.a,{href:`/guide/connections/rootly`,children:`Rootly`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A write setting in the connect form`}),_jsxs(_components.td,{children:[`A field you set when you connect, instead of a toggle on the detail panel. With writes allowed, every change still goes through `,_jsx(_components.a,{href:`/guide/approvals/overview`,children:`Approvals`}),`.`]}),_jsxs(_components.td,{children:[`Set per guide. RabbitMQ’s `,_jsx(_components.strong,{children:`RABBITMQ_ALLOW_MUTATIONS`}),` starts on `,_jsx(_components.strong,{children:`Allow writes`}),`. Argo CD’s `,_jsx(_components.strong,{children:`READ_ONLY`}),` starts on `,_jsx(_components.strong,{children:`Full access`}),`.`]}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/guide/connections/rabbitmq`,children:`RabbitMQ`}),`, `,_jsx(_components.a,{href:`/guide/connections/argocd`,children:`Argo CD`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Approvals on each change`}),_jsxs(_components.td,{children:[`There’s no toggle. The credential’s scopes set what’s possible, and every change goes through `,_jsx(_components.a,{href:`/guide/approvals/overview`,children:`Approvals`}),`. Some reads go through approvals too: every Cloudflare and PostHog API call, Neon and Databricks SQL statements (`,_jsx(_components.code,{children:`SELECT`}),` included), and Firebase project switches and deploy status checks.`]}),_jsx(_components.td,{children:`n/a`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/guide/connections/neon`,children:`Neon`}),`, `,_jsx(_components.a,{href:`/guide/connections/firebase`,children:`Firebase`}),`, `,_jsx(_components.a,{href:`/guide/connections/cloudflare`,children:`Cloudflare`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Connection setting, no approvals`}),_jsx(_components.td,{children:`A write setting in the connect form decides everything. With writes allowed, changes run with nobody asked, and your Rules and Approval mode never see them.`}),_jsxs(_components.td,{children:[`Read-only. ClickHouse’s `,_jsx(_components.strong,{children:`Write access`}),` starts on `,_jsx(_components.strong,{children:`Read-only (default)`}),`.`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/clickhouse`,children:`ClickHouse`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Read-only`}),_jsx(_components.td,{children:`Agents have no write actions at all, so no toggle or Rule can allow one.`}),_jsx(_components.td,{children:`n/a`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/guide/connections/rancher`,children:`Rancher`}),`, `,_jsx(_components.a,{href:`/guide/connections/uptimerobot`,children:`UptimeRobot`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`MCP tools, no toggle`}),_jsxs(_components.td,{children:[`A custom MCP connection has no `,_jsx(_components.strong,{children:`Allow writes`}),` switch. CloudThinker sorts each tool the server serves into a read or a write: reads run without asking, and writes go through your Rules and Approval mode. A tool whose name contains a read word, such as `,_jsx(_components.code,{children:`get`}),` or `,_jsx(_components.code,{children:`check`}),`, counts as a read and runs without approval — `,_jsx(_components.code,{children:`get_and_delete_user`}),` included — unless the server marks it destructive.`]}),_jsx(_components.td,{children:`Decided per tool, from the server’s own hints and tool names.`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/mcp`,children:`Custom MCP`})})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`On a `,_jsx(_components.strong,{children:`Connection setting, no approvals`}),` connection such as ClickHouse, turning writes on lets agents change data with no Rule or approval in the way. Use a read-only database user unless you want that.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Allow writes`}),` starts on for most connections because the credential is the ceiling: a read-only credential already blocks every change. Start read-only, and widen the credential only when you have a specific change you want agents to make.`]}),`\n`,_jsx(_components.p,{children:`Connections sign in one of two ways:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method`}),_jsx(_components.th,{children:`How you connect`}),_jsx(_components.th,{children:`Examples`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Credentials you paste or upload`}),_jsx(_components.td,{children:`An IAM role ARN, an access key, a service-account JSON file, or an API token`}),_jsx(_components.td,{children:`AWS, Google Cloud, Datadog, PostgreSQL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`OAuth sign-in`}),_jsx(_components.td,{children:`You sign in to the provider in a pop-up and approve access`}),_jsx(_components.td,{children:`GitHub, GitLab, Linear, Sentry`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`reaching-private-services`,children:`Reaching private services`}),`\n`,_jsx(_components.p,{children:`Connections run from CloudThinker Cloud, so the service must accept connections from the internet. That matters for anything on a private network, such as an internal vCenter, PostgreSQL, Prometheus, or Argo CD.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`When to use it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Expose the endpoint and allowlist CloudThinker’s egress IPs`}),_jsxs(_components.td,{children:[`You can put the service behind a firewall rule. These docs don’t publish CloudThinker’s egress IP list: ask your CloudThinker contact, or `,_jsx(_components.a,{href:`https://cloudthinker.io/contact`,children:`contact us`}),`. Never expose a service with no authentication.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Run a `,_jsx(_components.a,{href:`/guide/workers`,children:`Worker`}),` inside your network`]}),_jsxs(_components.td,{children:[`The service must stay private. A Worker is a folder on a machine you run where the agent can run commands. A Worker doesn’t make a connection private: workspace connections still run in CloudThinker Cloud, even in a Worker chat. Instead, install the service’s command-line tool (for example `,_jsx(_components.code,{children:`psql`}),`) and its credentials on the Worker machine, and the agent’s shell uses them there. The service won’t appear in `,_jsx(_components.strong,{children:`More → Workspace settings → Connections`}),`. See `,_jsx(_components.a,{href:`/guide/workers#what-a-worker-can-reach`,children:`What a Worker can reach`}),`. Workers are in beta.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`rotate-a-credential`,children:`Rotate a credential`}),`\n`,_jsx(_components.p,{children:`You can replace a saved credential without disconnecting. The connection keeps its alias, settings, and history. AWS role connections use short-lived STS credentials, so there’s nothing to rotate: the External ID stays the same. Access keys, client secrets, JSON keys, and API tokens do need it.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create the new credential at the provider`,children:_jsx(_components.p,{children:`Create the new key or token first. Keep the old one active until the swap is done.`})}),_jsxs(Step,{title:`Replace it in CloudThinker`,children:[_jsxs(_components.p,{children:[`Open the service in `,_jsx(_components.strong,{children:`More → Workspace settings → Connections`}),`, click the pencil icon on the account’s row, and in `,_jsx(_components.strong,{children:`Edit Instance`}),` click `,_jsx(_components.strong,{children:`Replace…`}),` next to the saved credentials. Enter the new values and click `,_jsx(_components.strong,{children:`Save and test`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the test passes and the connection stays `,_jsx(_components.strong,{children:`Connected`}),`. If the test fails, CloudThinker keeps the previous credential and shows the error.`]})]}),_jsx(Step,{title:`Revoke the old credential`,children:_jsx(_components.p,{children:`Delete or deactivate the old key at the provider.`})})]}),`\n`,_jsxs(_components.p,{children:[`Single-connection services, such as Microsoft Azure and Backstage, have no pencil icon. Their `,_jsx(_components.strong,{children:`Replace credentials`}),` button appears only while the connection shows `,_jsx(_components.strong,{children:`Error`}),`, so to rotate early, disconnect and connect again with the new value. The exception is the token-based Git providers (GitLab, Bitbucket, Azure DevOps, and AWS CodeCommit): once Review is set up on them, rotate the token in `,_jsx(_components.strong,{children:`Review → Settings → Connection actions → Update token`}),`, with no disconnect. See `,_jsx(_components.a,{href:`/guide/connections/azure-devops`,children:`Azure DevOps`}),` and `,_jsx(_components.a,{href:`/guide/connections/bitbucket`,children:`Bitbucket`}),`.`]}),`\n`,_jsx(_components.p,{children:`A disconnect and reconnect starts a new connection, so plan it for a quiet period:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Agents, scheduled automations, and Optimize refreshes can’t use the service between the disconnect and the reconnect.`}),`\n`,_jsx(_components.li,{children:`Discovery runs again and spends credits.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Allow writes`}),` goes back to its default, which is on for most connections. Turn it off again if you had it off.`]}),`\n`,_jsxs(_components.li,{children:[`Check that `,_jsx(_components.a,{href:`/guide/approvals/rules`,children:`Rules`}),` naming the connection still list it.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Most OAuth connections don’t have a credential to replace. To switch the signed-in account, disconnect and connect again. Asana is the exception: it stores your Asana app’s Client secret, and you enter it again each time you reconnect.`}),`\n`,_jsx(Heading,{level:`2`,id:`when-a-connection-breaks`,children:`When a connection breaks`}),`\n`,_jsxs(_components.p,{children:[`If a credential stops working in the background (an expired token, a revoked key, a deleted role), the connection switches to `,_jsx(_components.strong,{children:`Error`}),`. For AWS, that takes three background failures in a row, so one blip doesn’t trip it. Other connections switch when a background token refresh or a run hits an authentication failure. Workspace admins get one `,_jsx(_components.a,{href:`/guide/notifications`,children:`notification`}),` per outage, not one per failed retry. A test you run yourself never notifies anyone.`]}),`\n`,_jsxs(_components.p,{children:[`While a connection shows `,_jsx(_components.strong,{children:`Error`}),`, scheduled work that depends on it is skipped, including `,_jsx(_components.a,{href:`/guide/cost-optimization/overview`,children:`Optimize`}),` cost refreshes, scheduled `,_jsx(_components.a,{href:`/guide/automation/automations`,children:`automations`}),`, and `,_jsx(_components.a,{href:`/guide/pulse/overview`,children:`Pulse`}),` alert polling.`]}),`\n`,_jsx(_components.p,{children:`To recover:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Fix the cause at the provider, for example restore the role or issue a new key.`}),`\n`,_jsxs(_components.li,{children:[`Open the connection. The detail panel shows the error. Click `,_jsx(_components.strong,{children:`Retry`}),` to test the saved credential again, or `,_jsx(_components.strong,{children:`Replace credentials`}),` to enter a new one. `,_jsx(_components.strong,{children:`Replace credentials`}),` opens the same `,_jsx(_components.strong,{children:`Edit Instance`}),` dialog as `,_jsx(_components.strong,{children:`Replace…`}),`. For an OAuth connection, click `,_jsx(_components.strong,{children:`Connect`}),` to sign in again.`]}),`\n`,_jsxs(_components.li,{children:[`When the status returns to `,_jsx(_components.strong,{children:`Connected`}),`, scheduled work resumes on its next cycle.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`disconnect-a-connection`,children:`Disconnect a connection`}),`\n`,_jsxs(_components.p,{children:[`Open the service in `,_jsx(_components.strong,{children:`More → Workspace settings → Connections`}),`. On a service with account rows, click the trash icon on the account’s row. On a single-connection service, click `,_jsx(_components.strong,{children:`Disconnect`}),` on the detail panel. Confirm in the `,_jsx(_components.strong,{children:`Disconnect`}),` dialog. It can’t be undone.`]}),`\n`,_jsx(_components.p,{children:`Agents lose access to the service as soon as the disconnect finishes. Then delete the role, key, or token at the provider, because disconnecting doesn’t remove it there.`}),`\n`,_jsx(_components.p,{children:`If you connect the service again, it’s a new connection:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Discovery runs again and spends credits.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Allow writes`}),` goes back to its default, and `,_jsx(_components.strong,{children:`Environment`}),` goes back to `,_jsx(_components.strong,{children:`Not set`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guide/approvals/rules`,children:`Rules`}),` match connections by `,_jsx(_components.strong,{children:`Alias`}),`. Reuse the same Alias when you reconnect, and Rules that name the connection keep matching.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`security`,children:`Security`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Least privilege`}),` — grant only the permissions the agents need for your use case; start read-only and widen later.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Read-only by default`}),` — use read-only credentials unless you want agents to make changes through this connection.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rotate credentials`}),` — rotate keys and tokens on your normal schedule; CloudThinker picks up the new value when you update the connection.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Revoke on offboarding`}),` — remove the credential at the provider when you delete a connection or a teammate leaves.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`A connection isn’t read-only on its own. Many start with `,_jsx(_components.strong,{children:`Allow writes`}),` on (see `,_jsx(_components.a,{href:`#how-access-works`,children:`How access works`}),`), so a read-only credential is what keeps a connection read-only.`]}),`\n`,_jsx(_components.p,{children:`How CloudThinker handles what you connect:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Question`}),_jsx(_components.th,{children:`Answer`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Where is the credential stored?`}),_jsx(_components.td,{children:`Encrypted at rest. It’s injected into the CloudThinker-managed sandbox only when a command runs, never sent to a Worker, and never shown back in chat.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Can data reach the model?`}),_jsx(_components.td,{children:`Yes. Anything the credential can read can reach the model, because command output is part of the conversation. Scope the credential to what agents need.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Is data used for training, and how long is it kept?`}),_jsxs(_components.td,{children:[`These docs don’t cover model-provider data terms. See `,_jsx(_components.a,{href:`/guide/security/overview#at-a-glance`,children:`Security`}),` for what they do cover, and ask for the rest in a vendor review.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`What’s logged?`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/guide/security/audit-logs`,children:`Audit Logs`}),` (`,_jsx(_components.strong,{children:`Admin Settings → Audit Logs`}),`) records connections created, edited, retried, and deleted, credential replacements, and approval decisions, on the Scale and Enterprise plans. Flipping a connection’s `,_jsx(_components.strong,{children:`Allow writes`}),` switch isn’t recorded there.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Are agent commands logged?`}),_jsx(_components.td,{children:`Each command an agent runs, and its output, stays in the chat’s history. The calls also land in the provider’s own audit log, such as AWS CloudTrail or Google Cloud Audit Logs.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/guide/security/overview`,children:`Security`}),` for encryption details, retention, and the model provider.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connection-catalog`,children:`Connection catalog`}),`\n`,_jsx(Heading,{level:`3`,id:`cloud`,children:`Cloud`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/aws`,children:`Amazon Web Services`})}),_jsx(_components.td,{children:`See compute, storage, identity, cost, and monitoring.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/cloudflare`,children:`Cloudflare`})}),_jsx(_components.td,{children:`Review zones, traffic analytics, firewall events, and Workers.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/digitalocean`,children:`DigitalOcean`})}),_jsx(_components.td,{children:`See droplets, databases, Kubernetes, networking, and cost.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/fptcloud`,children:`FPT Cloud`})}),_jsx(_components.td,{children:`Inspect VMs, networks, activity, and resource tags.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/gcp`,children:`Google Cloud Platform`})}),_jsx(_components.td,{children:`See compute, GKE, BigQuery, storage, identity, and cost.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/greennode`,children:`GreenNode`})}),_jsx(_components.td,{children:`Operate compute, Kubernetes, databases, and storage by CLI.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/azure`,children:`Microsoft Azure`})}),_jsx(_components.td,{children:`See virtual machines, AKS, databases, identity, and cost.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/openstack`,children:`OpenStack`})}),_jsx(_components.td,{children:`See compute, networks, storage, images, and quotas.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/vmware`,children:`VMware vCenter`})}),_jsx(_components.td,{children:`See virtual machines, hosts, clusters, and datastores.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`infrastructure`,children:`Infrastructure`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/awx`,children:`AWX`})}),_jsx(_components.td,{children:`Inspect Ansible inventories, then launch a job template.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/terraform`,children:`HCP Terraform`})}),_jsx(_components.td,{children:`Review workspaces and run health, then organize empty ones.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/pulumi`,children:`Pulumi`})}),_jsx(_components.td,{children:`Review stacks, managed resources, and policy violations, then deploy to AWS.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/ssh`,children:`SSH`})}),_jsx(_components.td,{children:`Inspect server health, logs, disk capacity, and processes.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`containers`,children:`Containers`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/argocd`,children:`ArgoCD`})}),_jsx(_components.td,{children:`Inspect deployments, sync state, and managed resources.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/dockerhub`,children:`Docker Hub`})}),_jsx(_components.td,{children:`Review repositories, tags, sizes, and stale images.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/kubernetes`,children:`Kubernetes`})}),_jsx(_components.td,{children:`Inspect workloads, rollouts, logs, and node pressure.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/rancher`,children:`Rancher`})}),_jsx(_components.td,{children:`Inspect clusters, projects, nodes, and role bindings.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`app-platforms`,children:`App Platforms`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/firebase`,children:`Firebase`})}),_jsx(_components.td,{children:`Review projects, apps, security rules, and deploy state.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/flyio`,children:`Fly.io`})}),_jsx(_components.td,{children:`Review apps, machines, regional placement, and capacity.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/heroku`,children:`Heroku`})}),_jsx(_components.td,{children:`Review apps, dynos, logs, add-ons, and deploys.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/netlify`,children:`Netlify`})}),_jsx(_components.td,{children:`Review projects, deploys, and forms, then deploy a change.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/render`,children:`Render`})}),_jsx(_components.td,{children:`Review services, deploys, logs, and Postgres, then deploy.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/supabase`,children:`Supabase`})}),_jsx(_components.td,{children:`Review projects, schemas, and migrations, then run a change.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/vercel`,children:`Vercel`})}),_jsx(_components.td,{children:`Review projects, deployments, and logs, then redeploy.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`databases`,children:`Databases`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/cassandra`,children:`Cassandra`})}),_jsx(_components.td,{children:`Inspect keyspaces, tables, replication, and node health.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/clickhouse`,children:`ClickHouse`})}),_jsx(_components.td,{children:`Query databases, tables, and schemas across clusters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/cockroachdb`,children:`CockroachDB`})}),_jsx(_components.td,{children:`Inspect databases, schemas, and query performance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/databricks`,children:`Databricks`})}),_jsx(_components.td,{children:`Inspect clusters, jobs, notebooks, and catalog assets.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/influxdb`,children:`InfluxDB`})}),_jsx(_components.td,{children:`Query buckets, databases, retention, and series growth.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/mssql`,children:`Microsoft SQL Server`})}),_jsx(_components.td,{children:`Discover schemas and read or edit approved tables.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/mongodb`,children:`MongoDB`})}),_jsx(_components.td,{children:`Inspect databases, collections, indexes, and query plans.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/mysql`,children:`MySQL`})}),_jsx(_components.td,{children:`Inspect schemas, indexes, table health, and slow queries.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/neon`,children:`Neon`})}),_jsx(_components.td,{children:`Inspect projects, branches, schemas, and migrations.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/postgresql`,children:`PostgreSQL`})}),_jsx(_components.td,{children:`Inspect tables, indexes, locks, and slow-query performance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/redis`,children:`Redis`})}),_jsx(_components.td,{children:`Inspect memory, capacity, expiration, and slow commands.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/snowflake`,children:`Snowflake`})}),_jsx(_components.td,{children:`Track credit spend, query history, slow queries, and roles.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`ai-\u0026-vectors`,children:`AI \u0026 Vectors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/braintrust`,children:`Braintrust`})}),_jsx(_components.td,{children:`Compare experiments, scores, and datasets across projects.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/langfuse`,children:`Langfuse`})}),_jsx(_components.td,{children:`Investigate LLM traces, prompts, costs, and evaluations.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/langsmith`,children:`LangSmith`})}),_jsx(_components.td,{children:`Explore run trees, projects, datasets, and experiments.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/pinecone`,children:`Pinecone`})}),_jsx(_components.td,{children:`Inspect vector indexes and namespaces, then update records.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`monitoring`,children:`Monitoring`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/appdynamics`,children:`AppDynamics`})}),_jsx(_components.td,{children:`Trace APM transactions, tiers, nodes, and health rules.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/coralogix`,children:`Coralogix`})}),_jsx(_components.td,{children:`Explore log pipelines, metrics, alerts, and incidents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/datadog`,children:`Datadog`})}),_jsx(_components.td,{children:`Search logs, metrics, traces, monitors, and dashboards.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/dynatrace`,children:`Dynatrace`})}),_jsx(_components.td,{children:`Trace APM problems across logs, traces, and metrics.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/grafana`,children:`Grafana`})}),_jsx(_components.td,{children:`Explore dashboards, metrics, logs, and alert rules.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/honeycomb`,children:`Honeycomb`})}),_jsx(_components.td,{children:`Explore traces, datasets, waterfalls, triggers, and SLOs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/newrelic`,children:`New Relic`})}),_jsx(_components.td,{children:`Query APM entities, dashboards, alerts, and incidents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/prometheus`,children:`Prometheus`})}),_jsx(_components.td,{children:`Query live and historical metrics, labels, and alerts.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/prtg`,children:`PRTG Network Monitor`})}),_jsx(_components.td,{children:`Investigate sensors and alarms, read history, and act on monitoring objects.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/rollbar`,children:`Rollbar`})}),_jsx(_components.td,{children:`Review top issues, deployments, and replay, then update one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/sentry`,children:`Sentry`})}),_jsx(_components.td,{children:`Search issues, traces, events, and root-cause signals.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/signoz`,children:`SigNoz`})}),_jsx(_components.td,{children:`Trace services, dashboards, alerts, logs, and metrics.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/splunkobservability`,children:`Splunk Observability`})}),_jsx(_components.td,{children:`Trace service health, dependencies, latency, and errors.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/uptimerobot`,children:`UptimeRobot`})}),_jsx(_components.td,{children:`Track monitor status, uptime history, and recent incidents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/zabbix`,children:`Zabbix`})}),_jsx(_components.td,{children:`Review hosts, templates, triggers, events, and dashboards.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`logs-\u0026-search`,children:`Logs \u0026 Search`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/elasticsearch`,children:`Elasticsearch`})}),_jsx(_components.td,{children:`Inspect indices, mappings, shards, and cluster health.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/graylog`,children:`Graylog`})}),_jsx(_components.td,{children:`Search messages and streams with a read-only API token.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/opensearch`,children:`OpenSearch`})}),_jsx(_components.td,{children:`Inspect indices, shards, documents, and search relevance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/splunkplatform`,children:`Splunk Platform`})}),_jsx(_components.td,{children:`Search logs over time ranges and review index volume.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/sumologic`,children:`Sumo Logic`})}),_jsx(_components.td,{children:`Search logs, monitors, collectors, and Cloud SIEM insights.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/wazuh`,children:`Wazuh`})}),_jsx(_components.td,{children:`Investigate alerts and agents, and manage detection rules.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`incidents`,children:`Incidents`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/betterstack`,children:`Better Stack`})}),_jsx(_components.td,{children:`Review incidents, on-call coverage, uptime, and heartbeats.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/firehydrant`,children:`FireHydrant`})}),_jsx(_components.td,{children:`Review incidents, severity, alerts, and the service catalog.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/jsm`,children:`Jira Service Management`})}),_jsx(_components.td,{children:`Review alerts and on-call, then acknowledge or escalate.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/pagerduty`,children:`PagerDuty`})}),_jsxs(_components.td,{children:[`Send incidents to `,_jsx(_components.a,{href:`/guide/incident/overview`,children:`Resolve`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/rootly`,children:`Rootly`})}),_jsx(_components.td,{children:`Review incidents, alerts, and severity, then file an action.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/servicenow`,children:`ServiceNow`})}),_jsx(_components.td,{children:`Review and update incidents, changes, and problems.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Opsgenie isn’t a connection. Send its alerts to Resolve as a `,_jsx(_components.a,{href:`/guide/incident/webhook-integrations/overview`,children:`webhook signal`}),` from `,_jsx(_components.strong,{children:`Resolve → Integrations`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`code-\u0026-ci/cd`,children:`Code \u0026 CI/CD`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/aws-codecommit`,children:`AWS CodeCommit`})}),_jsx(_components.td,{children:`Browse repositories, pull requests, and review comments.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/azure-devops`,children:`Azure DevOps`})}),_jsx(_components.td,{children:`Review pull requests, pipelines, and work items.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/bitbucket`,children:`Bitbucket`})}),_jsx(_components.td,{children:`Review repositories, pull requests, pipelines, and issues.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/buildkite`,children:`Buildkite`})}),_jsx(_components.td,{children:`Trace build failures through jobs and logs, then retry.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/circleci`,children:`CircleCI`})}),_jsx(_components.td,{children:`Review pipeline failures and flaky tests, then rerun.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/github`,children:`GitHub`})}),_jsx(_components.td,{children:`Review repositories, pull requests, and Actions runs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/gitlab`,children:`GitLab`})}),_jsx(_components.td,{children:`Review repositories, merge requests, issues, and pipelines.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/harness`,children:`Harness`})}),_jsx(_components.td,{children:`Review pipelines, deployments, services, and cost.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/jenkins`,children:`Jenkins`})}),_jsx(_components.td,{children:`Review jobs, builds, logs, and tests, then launch one.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`security-2`,children:`Security`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/cortex-xdr`,children:`Cortex XDR`})}),_jsx(_components.td,{children:`Triage incidents, alerts, and endpoints, then update incidents.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/fortigate`,children:`FortiGate`})}),_jsx(_components.td,{children:`Check device health and traffic, then edit configuration.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/gitguardian`,children:`GitGuardian`})}),_jsx(_components.td,{children:`Scan code for exposed secrets and trace each occurrence.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/vault`,children:`HashiCorp Vault`})}),_jsx(_components.td,{children:`Read KV secrets and generate temporary credentials.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/qradar`,children:`IBM QRadar SIEM`})}),_jsx(_components.td,{children:`Triage offenses, search events with AQL, and update offenses.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/keycloak`,children:`Keycloak`})}),_jsx(_components.td,{children:`Inspect realms, users, clients, roles, and auth flows.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/okta`,children:`Okta`})}),_jsx(_components.td,{children:`Review users, groups, apps, and one person’s access.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/pan-os`,children:`Palo Alto PAN-OS`})}),_jsx(_components.td,{children:`Check firewall health, security rules, logs, and live sessions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/prowler`,children:`Prowler`})}),_jsx(_components.td,{children:`Review security findings, checks, and cloud compliance.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/semgrep`,children:`Semgrep`})}),_jsx(_components.td,{children:`Scan code for security findings across your repositories.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/sonarqube`,children:`SonarQube`})}),_jsx(_components.td,{children:`Review issues, quality gates, hotspots, and duplication.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`compliance`,children:`Compliance`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/drata`,children:`Drata`})}),_jsx(_components.td,{children:`Track failing tests, control readiness, and personnel.`})]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`productivity`,children:`Productivity`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/asana`,children:`Asana`})}),_jsx(_components.td,{children:`Review projects, tasks, and workload, then update a task.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/atlassian`,children:`Atlassian`})}),_jsx(_components.td,{children:`Search Jira issues and Confluence pages, then update one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/backlog`,children:`Backlog`})}),_jsx(_components.td,{children:`Review tickets, milestones, and wikis, then update a ticket.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/backstage`,children:`Backstage`})}),_jsx(_components.td,{children:`Search the catalog for services, owners, APIs, and docs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/clickup`,children:`ClickUp`})}),_jsx(_components.td,{children:`Review tasks, docs, and time tracking, then update work.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/linear`,children:`Linear`})}),_jsx(_components.td,{children:`Search issues, projects, and cycles, then update one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/monday`,children:`monday.com`})}),_jsx(_components.td,{children:`Review workspaces, boards, and items, then update a board.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/notion`,children:`Notion`})}),_jsx(_components.td,{children:`Search pages and databases, then update content.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`analytics`,children:`Analytics`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/google-analytics`,children:`Google Analytics`})}),_jsx(_components.td,{children:`Read traffic, key events, and realtime activity with a service account key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/hubspot`,children:`HubSpot`})}),_jsx(_components.td,{children:`Search contacts, companies, deals, tickets, and quotes.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/clarity`,children:`Microsoft Clarity`})}),_jsx(_components.td,{children:`Watch traffic, engagement, and session recordings.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/posthog`,children:`PostHog`})}),_jsx(_components.td,{children:`Explore feature flags, insights, and user trends.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`messaging`,children:`Messaging`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/kafka`,children:`Apache Kafka`})}),_jsx(_components.td,{children:`Watch topics, partitions, consumer lag, and cluster health.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/flespi`,children:`Flespi`})}),_jsx(_components.td,{children:`Explore devices, channels, messages, and streams.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/rabbitmq`,children:`RabbitMQ`})}),_jsx(_components.td,{children:`Watch queue depth, consumer lag, dead letters, and alarms.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`custom-mcp`,children:`Custom MCP`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Service`}),_jsx(_components.th,{children:`What agents can do`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/guide/connections/mcp`,children:`Custom MCP`})}),_jsxs(_components.td,{children:[`Add any tool or API that runs an MCP server. Set it up on the `,_jsx(_components.strong,{children:`MCP Connections`}),` tab.`]})]})})]}),`\n`,_jsxs(_components.p,{children:[`If a service isn’t listed, connect it as a `,_jsx(_components.a,{href:`/guide/connections/mcp`,children:`custom MCP connection`}),`. MCP (Model Context Protocol) is an open standard for giving AI agents tools.`]}),`\n`,_jsxs(_components.p,{children:[`Chat platforms are set up as workspace integrations, not connections: see `,_jsx(_components.a,{href:`/guide/slack-integration`,children:`Slack`}),`, `,_jsx(_components.a,{href:`/guide/teams-integration`,children:`Microsoft Teams`}),`, and `,_jsx(_components.a,{href:`/guide/google-chat-integration`,children:`Google Chat`}),`. Connecting GitHub, GitLab, Bitbucket, or Azure DevOps also powers `,_jsx(_components.a,{href:`/guide/code-review/setup`,children:`Review`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Connect AWS`,icon:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=45d526a3e9345214c0345f277da2e829`,href:`/guide/connections/aws`,\"data-og-width\":`24`,width:`24`,\"data-og-height\":`24`,height:`24`,\"data-path\":`images/icons/aws.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=230832fcfa627b5deb5c6d1676137074 280w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=87761268c176a0a482f7cc1d256f4d89 560w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=6f74755d2d1cb6a37ac263813ad92e4e 840w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=94d323ef592df1899e83d63cd0d31e0d 1100w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=f5de9df86dad60ca91a00530986f0b6b 1650w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=15d7abd902a1b1c6824ffb36283e9165 2500w`,children:_jsx(_components.p,{children:`Create a read-only IAM role with one script in CloudShell.`})}),_jsx(Card,{title:`Connect Google Cloud`,icon:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=2cc7040a8e4cd401b1c388f8b0cd6fe3`,href:`/guide/connections/gcp`,\"data-og-width\":`24`,width:`24`,\"data-og-height\":`24`,height:`24`,\"data-path\":`images/icons/gcp.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=6b034de4a91d200bbfdb759b040a3a1c 280w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=83513f9fd61545ab3bd9237d117ecc13 560w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=287fc63ce7770797bc6439aa094c5065 840w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=bfda918213037385240ab10a99d00711 1100w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=6c61a9fe28f9a28e2fba8a777107af82 1650w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/gcp.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=0fe006a7b2238871fc11725c67e9dff8 2500w`,children:_jsx(_components.p,{children:`Create a viewer service account and upload its JSON key.`})}),_jsx(Card,{title:`Approvals`,icon:`shield-check`,href:`/guide/approvals/overview`,children:_jsx(_components.p,{children:`Decide which changes agents can make on their own and which need a person.`})}),_jsx(Card,{title:`Custom MCP connections`,icon:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=c89b6087a9d233901dea5e354452eff6`,href:`/guide/connections/mcp`,\"data-og-width\":`24`,width:`24`,\"data-og-height\":`24`,height:`24`,\"data-path\":`images/icons/mcp.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=040ca2caedb2ac04874cf63191689018 280w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=9c73687be5785b5b33f42375f552bc03 560w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=8976e9ae443950ff91e66d63e4484b21 840w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=9e14b986aa6415a6970ce2ec34e81c06 1100w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=1169beac3c4fbef08b93986b3ed421c6 1650w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mcp.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=fcb7a153104c1459a30c678d3ba0708d 2500w`,children:_jsx(_components.p,{children:`Connect a service that isn’t in the catalog.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Connections","description":"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.","icon":"plug","href":"/guide/connections/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Add a connection","slug":"add-a-connection","depth":2,"children":[]},{"title":"Set the environment","slug":"set-the-environment","depth":2,"children":[]},{"title":"What happens after you connect","slug":"what-happens-after-you-connect","depth":2,"children":[]},{"title":"How access works","slug":"how-access-works","depth":2,"children":[]},{"title":"Reaching private services","slug":"reaching-private-services","depth":2,"children":[]},{"title":"Rotate a credential","slug":"rotate-a-credential","depth":2,"children":[]},{"title":"When a connection breaks","slug":"when-a-connection-breaks","depth":2,"children":[]},{"title":"Disconnect a connection","slug":"disconnect-a-connection","depth":2,"children":[]},{"title":"Security","slug":"security","depth":2,"children":[]},{"title":"Connection catalog","slug":"connection-catalog","depth":2,"children":[{"title":"Cloud","slug":"cloud","depth":3,"children":[]},{"title":"Infrastructure","slug":"infrastructure","depth":3,"children":[]},{"title":"Containers","slug":"containers","depth":3,"children":[]},{"title":"App Platforms","slug":"app-platforms","depth":3,"children":[]},{"title":"Databases","slug":"databases","depth":3,"children":[]},{"title":"AI \u0026 Vectors","slug":"ai-\u0026-vectors","depth":3,"children":[]},{"title":"Monitoring","slug":"monitoring","depth":3,"children":[]},{"title":"Logs \u0026 Search","slug":"logs-\u0026-search","depth":3,"children":[]},{"title":"Incidents","slug":"incidents","depth":3,"children":[]},{"title":"Code \u0026 CI/CD","slug":"code-\u0026-ci/cd","depth":3,"children":[]},{"title":"Security","slug":"security-2","depth":3,"children":[]},{"title":"Compliance","slug":"compliance","depth":3,"children":[]},{"title":"Productivity","slug":"productivity","depth":3,"children":[]},{"title":"Analytics","slug":"analytics","depth":3,"children":[]},{"title":"Messaging","slug":"messaging","depth":3,"children":[]},{"title":"Custom MCP","slug":"custom-mcp","depth":3,"children":[]}]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"cloudthinker","siteName":"CloudThinker","title":"Connections - CloudThinker","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guide/connections/overview","matchLevel":0},"vi":{"href":"/vi/guide/connections/overview","matchLevel":1},"ja":{"href":"/ja/guide/connections/overview","matchLevel":1},"ko":{"href":"/ko/guide/connections/overview","matchLevel":1}}},"lastModified":"2026-11-06T13:03:33.786Z","originalFileLocation":"guide/connections/overview.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connections - CloudThinker\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudThinker\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudthinker.io/guide/connections/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudthinker.mintlify.site/_mintlify/api/og/v2?division=Connections\u0026amp;title=Connections\u0026amp;description=Connect+your+cloud%2C+data%2C+and+tooling+so+agents+can+investigate+them%2C+and+keep+that+access+scoped%2C+verified%2C+and+rotated.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=886e16864e7cfa85571e9e0e6753e17a06afc71f88c4552da9515032ca2750c1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Connections - CloudThinker\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudthinker.mintlify.site/_mintlify/api/og/v2?division=Connections\u0026amp;title=Connections\u0026amp;description=Connect+your+cloud%2C+data%2C+and+tooling+so+agents+can+investigate+them%2C+and+keep+that+access+scoped%2C+verified%2C+and+rotated.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=886e16864e7cfa85571e9e0e6753e17a06afc71f88c4552da9515032ca2750c1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0c93c0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudthinker.io/guide/connections/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guide/connections/overview.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.cloudthinker.io/guide/connections/overview\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.cloudthinker.io/vi/guide/connections/overview\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.cloudthinker.io/ja/guide/connections/overview\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.cloudthinker.io/ko/guide/connections/overview\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.cloudthinker.io/guide/connections/overview\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudthinker.io/#organization\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudthinker.io#website\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudthinker.io/guide/connections/overview#webpage\",\"url\":\"https://docs.cloudthinker.io/guide/connections/overview\",\"name\":\"Connections\",\"description\":\"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\",\"dateModified\":\"2026-11-06T13:03:33.786Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudthinker.io/guide/connections/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudthinker.io/guide/connections/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CloudThinker\",\"item\":\"https://docs.cloudthinker.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Connections\",\"item\":\"https://docs.cloudthinker.io/guide/connections/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cloudthinker.io/guide/connections/overview#article\",\"headline\":\"Connections\",\"name\":\"Connections\",\"description\":\"Connect your cloud, data, and tooling so agents can investigate them, and keep that access scoped, verified, and rotated.\",\"url\":\"https://docs.cloudthinker.io/guide/connections/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudthinker.io/guide/connections/overview#webpage\"},\"dateModified\":\"2026-11-06T13:03:33.786Z\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudThinker\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudThinker","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":""}]},{"tab":"Products","pages":[{"title":"Products","href":"/guide/incident/overview"}]},{"tab":"Platform","groups":[{"group":"Connections","pages":[{"title":"Connections","icon":"plug","href":"/guide/connections/overview"},{"group":"Cloud","pages":[{"title":"Amazon Web Services","description":"Connect an AWS account with a read-only IAM role so agents can investigate compute, storage, identity, cost, and monitoring.","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/aws.svg","href":"/guide/connections/aws"},{"title":"Microsoft Azure","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/azure.svg","href":"/guide/connections/azure"},{"title":"Cloudflare","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cloudflare.svg","href":"/guide/connections/cloudflare"},{"title":"DigitalOcean","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/digitalocean.svg","href":"/guide/connections/digitalocean"},{"title":"FPT Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/fptcloud.svg","href":"/guide/connections/fptcloud"},{"title":"Google Cloud Platform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/gcp.svg","href":"/guide/connections/gcp"},{"title":"GreenNode","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/greennode.svg","href":"/guide/connections/greennode"},{"title":"OpenStack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/openstack.svg","href":"/guide/connections/openstack"},{"title":"VMware vCenter","icon":"server","href":"/guide/connections/vmware"}]},{"group":"Infrastructure","pages":[{"title":"AWX","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/awx.svg","href":"/guide/connections/awx"},{"title":"Pulumi","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pulumi.svg","href":"/guide/connections/pulumi"},{"title":"SSH","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/ssh.svg","href":"/guide/connections/ssh"},{"title":"HCP Terraform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/terraform.svg","href":"/guide/connections/terraform"}]},{"group":"Containers","pages":[{"title":"ArgoCD","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/argocd.svg","href":"/guide/connections/argocd"},{"title":"Docker Hub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/dockerhub.svg","href":"/guide/connections/dockerhub"},{"title":"Kubernetes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/kubernetes.svg","href":"/guide/connections/kubernetes"},{"title":"Rancher","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rancher.svg","href":"/guide/connections/rancher"}]},{"group":"App Platforms","pages":[{"title":"Firebase","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/firebase.svg","href":"/guide/connections/firebase"},{"title":"Fly.io","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/flyio.svg","href":"/guide/connections/flyio"},{"title":"Heroku","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/heroku.svg","href":"/guide/connections/heroku"},{"title":"Netlify","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/netlify.svg","href":"/guide/connections/netlify"},{"title":"Render","icon":"server","href":"/guide/connections/render"},{"title":"Supabase","icon":"bolt","href":"/guide/connections/supabase"},{"title":"Vercel","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/vercel.svg","href":"/guide/connections/vercel"}]},{"group":"Databases","pages":[{"title":"Apache Cassandra","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cassandra.svg","href":"/guide/connections/cassandra"},{"title":"ClickHouse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clickhouse.svg","href":"/guide/connections/clickhouse"},{"title":"CockroachDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cockroachdb.svg","href":"/guide/connections/cockroachdb"},{"title":"Databricks","icon":"layer-group","href":"/guide/connections/databricks"},{"title":"InfluxDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/influxdb.svg","href":"/guide/connections/influxdb"},{"title":"MongoDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mongodb.svg","href":"/guide/connections/mongodb"},{"title":"Microsoft SQL Server","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mssql.svg","href":"/guide/connections/mssql"},{"title":"MySQL","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mysql.svg","href":"/guide/connections/mysql"},{"title":"Neon","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/neon.svg","href":"/guide/connections/neon"},{"title":"PostgreSQL","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/postgresql.svg","href":"/guide/connections/postgresql"},{"title":"Redis","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/redis.svg","href":"/guide/connections/redis"},{"title":"Snowflake","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/snowflake.svg","href":"/guide/connections/snowflake"}]},{"group":"AI \u0026 Vectors","pages":[{"title":"Braintrust","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/braintrust.svg","href":"/guide/connections/braintrust"},{"title":"Langfuse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/langfuse.svg","href":"/guide/connections/langfuse"},{"title":"LangSmith","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/langsmith.svg","href":"/guide/connections/langsmith"},{"title":"Pinecone","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pinecone.svg","href":"/guide/connections/pinecone"}]},{"group":"Monitoring","pages":[{"title":"AppDynamics","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/appdynamics.svg","href":"/guide/connections/appdynamics"},{"title":"Coralogix","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/coralogix.svg","href":"/guide/connections/coralogix"},{"title":"Datadog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/datadog.svg","href":"/guide/connections/datadog"},{"title":"Dynatrace","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/dynatrace.svg","href":"/guide/connections/dynatrace"},{"title":"Grafana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/grafana.svg","href":"/guide/connections/grafana"},{"title":"Honeycomb","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/honeycomb.svg","href":"/guide/connections/honeycomb"},{"title":"New Relic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/newrelic.svg","href":"/guide/connections/newrelic"},{"title":"Prometheus","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/prometheus.svg","href":"/guide/connections/prometheus"},{"title":"PRTG Network Monitor","href":"/guide/connections/prtg"},{"title":"Rollbar","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rollbar.svg","href":"/guide/connections/rollbar"},{"title":"Sentry","icon":"bug","href":"/guide/connections/sentry"},{"title":"SigNoz","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/signoz.svg","href":"/guide/connections/signoz"},{"title":"Splunk Observability","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/splunkobservability.svg","href":"/guide/connections/splunkobservability"},{"title":"UptimeRobot","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/uptimerobot.svg","href":"/guide/connections/uptimerobot"},{"title":"Zabbix","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/zabbix.svg","href":"/guide/connections/zabbix"}]},{"group":"Logs \u0026 Search","pages":[{"title":"Elasticsearch","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/elasticsearch.svg","href":"/guide/connections/elasticsearch"},{"title":"Graylog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/graylog.svg","href":"/guide/connections/graylog"},{"title":"OpenSearch","icon":"magnifying-glass-chart","href":"/guide/connections/opensearch"},{"title":"Splunk Platform","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/splunkplatform.svg","href":"/guide/connections/splunkplatform"},{"title":"Sumo Logic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/sumologic.svg","href":"/guide/connections/sumologic"},{"title":"Wazuh","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/wazuh.svg","href":"/guide/connections/wazuh"}]},{"group":"Incidents","pages":[{"title":"Better Stack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/betterstack.svg","href":"/guide/connections/betterstack"},{"title":"FireHydrant","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/firehydrant.svg","href":"/guide/connections/firehydrant"},{"title":"Jira Service Management","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/jsm.svg","href":"/guide/connections/jsm"},{"title":"PagerDuty","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pagerduty.svg","href":"/guide/connections/pagerduty"},{"title":"Rootly","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rootly.svg","href":"/guide/connections/rootly"},{"title":"ServiceNow","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/servicenow.svg","href":"/guide/connections/servicenow"}]},{"group":"Code \u0026 CI/CD","pages":[{"title":"AWS CodeCommit","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/aws-codecommit.svg","href":"/guide/connections/aws-codecommit"},{"title":"Azure DevOps","icon":"microsoft","href":"/guide/connections/azure-devops"},{"title":"Bitbucket","icon":"bitbucket","href":"/guide/connections/bitbucket"},{"title":"Buildkite","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/buildkite.svg","href":"/guide/connections/buildkite"},{"title":"CircleCI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/circleci.svg","href":"/guide/connections/circleci"},{"title":"GitHub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/github.svg","href":"/guide/connections/github"},{"title":"GitLab","icon":"gitlab","href":"/guide/connections/gitlab"},{"title":"Harness","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/harness.svg","href":"/guide/connections/harness"},{"title":"Jenkins","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/jenkins.svg","href":"/guide/connections/jenkins"}]},{"group":"Security","pages":[{"title":"Cortex XDR","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/cortex-xdr.svg","href":"/guide/connections/cortex-xdr"},{"title":"FortiGate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/fortigate.svg","href":"/guide/connections/fortigate"},{"title":"GitGuardian","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/gitguardian.svg","href":"/guide/connections/gitguardian"},{"title":"IBM QRadar SIEM","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/qradar.svg","href":"/guide/connections/qradar"},{"title":"Keycloak","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/keycloak.svg","href":"/guide/connections/keycloak"},{"title":"Okta","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/okta.svg","href":"/guide/connections/okta"},{"title":"Palo Alto PAN-OS","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/pan-os.svg","href":"/guide/connections/pan-os"},{"title":"Prowler","icon":"shield-check","href":"/guide/connections/prowler"},{"title":"Semgrep","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/semgrep.svg","href":"/guide/connections/semgrep"},{"title":"SonarQube","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/sonarqube.svg","href":"/guide/connections/sonarqube"},{"title":"HashiCorp Vault","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/vault.svg","href":"/guide/connections/vault"}]},{"group":"Compliance","pages":[{"title":"Drata","icon":"clipboard-check","href":"/guide/connections/drata"}]},{"group":"Productivity","pages":[{"title":"Asana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/asana.svg","href":"/guide/connections/asana"},{"title":"Atlassian","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/atlassian.svg","href":"/guide/connections/atlassian"},{"title":"Backlog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/backlog.svg","href":"/guide/connections/backlog"},{"title":"Backstage","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/backstage.svg","href":"/guide/connections/backstage"},{"title":"ClickUp","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clickup.svg","href":"/guide/connections/clickup"},{"title":"Linear","icon":"list-check","href":"/guide/connections/linear"},{"title":"monday.com","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/monday.svg","href":"/guide/connections/monday"},{"title":"Notion","icon":"book-open","href":"/guide/connections/notion"}]},{"group":"Analytics","pages":[{"title":"Microsoft Clarity","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/clarity.svg","href":"/guide/connections/clarity"},{"title":"Google Analytics","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/google-analytics.svg","href":"/guide/connections/google-analytics"},{"title":"HubSpot","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/hubspot.svg","href":"/guide/connections/hubspot"},{"title":"PostHog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/posthog.svg","href":"/guide/connections/posthog"}]},{"group":"Messaging","pages":[{"title":"Flespi","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/flespi.svg","href":"/guide/connections/flespi"},{"title":"Apache Kafka","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/kafka.svg","href":"/guide/connections/kafka"},{"title":"RabbitMQ","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/rabbitmq.svg","href":"/guide/connections/rabbitmq"}]},{"group":"Custom MCP","pages":[{"title":"MCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/mcp.svg","href":"/guide/connections/mcp"}]}]},{"group":"Customize","pages":[{"title":"Teach CloudThinker","icon":"graduation-cap","href":"/guide/teach-cloudthinker"},{"title":"Custom Agent Quickstart","icon":"rocket","href":"/guide/agents/quickstart"},{"title":"Custom Skills","icon":"wand-magic-sparkles","href":"/guide/skills/custom-skills"},{"title":"Skill Format","icon":"file-code","href":"/guide/skills/skill-format"}]},{"group":"Approvals","pages":[{"title":"Approvals","icon":"shield-check","href":"/guide/approvals/overview"},{"title":"Approval Rules","icon":"list-check","href":"/guide/approvals/rules"},{"title":"Approval Mode","icon":"bolt","href":"/guide/approvals/approval-mode"},{"title":"Approvers and Activity","icon":"users","href":"/guide/approvals/approvers"}]},{"group":"Workspace settings","pages":[{"title":"Workspace Settings","icon":"gear","href":"/guide/workspace-settings"},{"title":"Workspace Members","icon":"users","href":"/guide/workspace-users"},{"title":"Workspace Branding","icon":"palette","href":"/guide/workspace-branding"},{"title":"Skills","icon":"sparkles","href":"/guide/skills/overview"},{"title":"Workspace Memory","icon":"brain-circuit","href":"/guide/memory"},{"title":"Dreaming","icon":"moon","href":"/guide/memory-dreaming"},{"title":"Customize","icon":"wand-magic-sparkles","href":"/guide/agents/customize"},{"title":"Knowledge Base","icon":"book","href":"/guide/knowledge"},{"title":"Credentials","icon":"vault","href":"/guide/credentials"},{"title":"Notifications","icon":"bell","href":"/guide/notifications"}]},{"group":"Admin Settings","pages":[{"title":"Admin Settings","icon":"building","href":"/guide/admin-settings"},{"title":"Organizations","icon":"building-columns","href":"/guide/organization"},{"title":"Workspaces","icon":"building","href":"/guide/workspaces"},{"title":"Manage Your Subscription","icon":"file-invoice-dollar","href":"/guide/billing/subscription"},{"title":"Pricing","icon":"credit-card","href":"/guide/billing/pricing"},{"title":"Credit Limits","icon":"sliders","href":"/guide/billing/credit-limits"},{"title":"Usage and Credits","icon":"coins","href":"/guide/billing/usage"},{"title":"Capabilities","icon":"toggle-on","href":"/guide/capabilities"},{"title":"Self-Hosted Sandbox (Workers)","sidebarTitle":"Self-Hosted Sandbox (Workers)","icon":"server","href":"/guide/workers"},{"title":"Worker Network and Security","sidebarTitle":"Worker security","icon":"shield-halved","tag":"Beta","href":"/guide/worker-security"}]},{"group":"Artifacts and sharing","pages":[{"title":"Artifacts","icon":"chart-mixed","href":"/guide/artifacts/overview"},{"title":"Sharing","icon":"share-nodes","href":"/guide/sharing"}]}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/guide/security/overview"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/guide/api/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/learn/aio/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Pricing","href":"https://cloudthinker.io/pricing"}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/guide/connections/overview"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/guide/connections/overview"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/guide/connections/overview"}]}]},"basePath":"","title":"Connections - CloudThinker","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CXMGc493.js","DynamicMarkdown-D-2HDKEp.js","zoom-image-lightbox-CE4cYsJE.js","lightbox-handle-r17bVUz3.js"]}