Both paths use the same SDK methods, MCP tools, and Engine refresh coordination. With managed auth, your Engine stores the encrypted user access and refresh tokens and delegates exchange and refresh to the broker. The broker processes those grants during exchange; it does not own your durable user connection.
Registry availability alone does not mean a service has a Fused Managed App. Fused must publish the exact service and auth scheme, and support your deployment’s callback URL. Managed auth does not replace unrelated API keys, mTLS credentials, or other schemes required by an operation.
Check your Engine
Hosted and self-hosted Engines use the same setup:ready means enrollment is usable; it does not prove that every service has a managed application.
If your Registry does not announce a broker, your deployment operator must configure that capability. A consumer Engine needs no copy of Fused’s client secret or manually populated Fused bucket.
Select managed auth in your app
First enable the service. In your SDK or MCP config, set the service’sauth.ref to ${fused.bucket.auth.<service>.<auth-name>}. Use its exact published service and auth scheme names.
For example, if Fused provides slack with an auth scheme named oauth2, the service configuration includes:
kind: sdk or kind: mcp config. Use your actual version and operation IDs; the example is not a catalogue availability guarantee. The connections bucket must exist and pass your permission checks. It stores user connections, not the managed application’s client pair.
Use fused-cli init ... --no-apply when preparing a new app, add the reference, then plan and apply. Changing auth.ref on an already published app requires a new immutable version.
Missing local credentials never switch an app to Fused automatically. This reference selects managed auth explicitly. It cannot read arbitrary Fused API keys or signing secrets.
Choose a specific managed application
Fused can publish several applications for the same service and auth scheme. Your operator supplies the application UUID and authorizes your Engine installation. Keep the provider’sauth.name unchanged and add the selector beside the managed reference:
Connect a user
An SDK or MCP uses the reference from its applied config. For standalone CLI consent, pass it explicitly:--managed-application-id <application-uuid>. Use the same UUID as your SDK or MCP config. REST and GraphQL connect requests accept managed_application_id alongside auth_ref.
The user completes provider consent. Your app then uses the usual endUserRef, or your MCP client uses X-Fused-End-User-Ref. Neither client receives Fused’s application secret or the user’s provider tokens.
The current consent flow uses your Engine’s canonical public URL plus /workspace/connect/callback. That URL must be allowed by the managed provider application. Self-hosting does not remove this requirement; confirm callback support for your deployment before starting consent.
Receive managed provider events
Managed OAuth alone does not subscribe your app to webhooks. OAuth application selection also works for services with no supported webhook relay. When the managed offering supports events, Fused configures the provider’s app-level webhook URL and verifies requests with its signing secret on the broker. Your Engine pulls only events authorized for your verified connection into its existing webhook stream. The current relay requires an authenticated signed request body and provider app/resource claims from the broker token exchange. Provider-specific subscription lifecycles, such as Google Drive notification channels, need additional support. Create a local receiver using your connection ID and the broker registration ID supplied by the managed service operator:managed-slack-events.yaml
fused-cli bucket connections connections --service slack. A broker registration ID is not a secret or a substitute for authorization: the broker proves the provider app and account from its own OAuth response. Connections created before event routing was configured may need fresh consent.
Do not set secret on this receiver or register its local URL with the provider. The provider calls Fused’s broker. Your Engine needs outbound broker connectivity for events, with no public consumer webhook endpoint. OAuth callback requirements remain separate.
Attach managed-slack-events to an SDK receiver or MCP event resource and select provider event names. SDK delivery is durable and at least once. MCP supplies live update notifications and a read of the latest retained occurrence.