URL Scheme for Chute iOS, Chute tvOS, Chute Mac and Chute Android

Chute iOS (from 1.0.2) and Chute tvOS support the following actions and one option.

Chute Mac registers the same chute scheme but answers only two verbs, install-config and import, in either the host or the path form: chute://import?url=... and chute:///install-config?url=.... The url= value has to be an http or https address or a share link (ss://, vmess://, …); anything else is refused. Chute Mac asks for confirmation before it fetches anything, then hands the address to the main window's Profiles tab, which imports it: a native profile is saved as a managed configuration with a 24-hour update interval, a Clash or sing-box profile is converted and saved as a static snapshot, and a share link — or a subscription that returns a list of them — is converted into a profile. start, stop, toggle and tv are not Mac actions.

Chute Android handles the import links described at the end of this page.

Action:

  • start | connect | on

    Start with selected configuration.

    Example: chute://start chute:///start

  • stop | disconnect | off

    Stop current session.

  • toggle | switch

    Start or stop with selected configuration.

  • tv (Chute iOS only)

    Open the remote-configuration import view with the given config URL. This action is only available on Chute iOS; Chute tvOS handles only start/stop/toggle.

    Unlike the other actions, tv is matched on the host alone, so the path form chute:///tv?url=... does nothing.

    Example: chute://tv?url=https://example.com/chute.conf

Option:

  • autoclose=true

    Auto close Chute after action completed. Chute iOS only: Chute tvOS accepts the parameter and ignores it, and the app stays open.

    Example: chute:///toggle?autoclose=true

Notice: on Chute iOS only the first URL of an activation is handled, so a shortcut that hands Chute several chute:// URLs at once acts on one of them.

x-callback-url

Chute supports x-callback-url specification. The URL scheme is 'chute' and the available actions are 'start', 'stop' and 'toggle'.

x-success and x-error must be wrapped in double braces, exactly as in the example below. A value written without them is read as empty and no callback is opened. x-cancel is not handled.

Example: chute://x-callback-url/start?x-success={{ "{{sms://}}" }}&x-error={{ "{{tel://}}" }}

x-success is opened once Chute has worked the switch. It says the request was carried out, not that the tunnel came up: a start that fails, or a VPN prompt you decline, still ends in x-success. x-error is opened only when start finds the tunnel already running or stop finds it already stopped, once the alert saying so is dismissed; toggle never opens it. With no configuration selected, neither callback is opened.

Chute Android

Chute Android opens chute:// links (and QR codes carrying them, scanned on the Configurations page or in the setup wizard) for importing only:

  • chute://download?url=... (also import, install-config) — downloads the configuration at url once. A native profile is saved with a #!MANAGED-CONFIG <url> header that carries no interval=; a Clash or sing-box profile is converted and saved as a static snapshot with no such header.
  • chute://subscribe?url=... — an alias of download, not a subscription. It takes the same one-shot path, and because the file it writes has no interval=, the app never refreshes it. For a native profile, a running engine still re-fetches the URL every 24 hours and applies the new content in memory, and the next start reads the file again — see Managed Configuration. To have Chute keep a subscription current, use Add Subscription in the app, which asks for the interval.
  • chute://tv?url=... (also remote) — loads the remote configuration repository at url.

A configuration that a link opened from outside the app adds — downloaded, or picked from the repository a tv link opens — is not selected: Chute opens the Configurations page with it marked Pending, and it becomes the running configuration only when you tap Done, so such a link never switches the configuration Chute is running.

A link opened from outside the app converts a Clash or sing-box profile as Download From URL on the Configurations page does, and so does the same link scanned there with Download From QR Code or in the setup wizard. Only the setup wizard keeps a native profile as a subscription: scanned there, the link gives a configuration the app refreshes every 86400 seconds, where the same link opened from outside the app downloads the file once and the app never refreshes it.

start, stop and toggle are not URL actions on Android. Automation apps use broadcast intents instead: com.r3studio.chute.action.START_VPN, com.r3studio.chute.action.STOP_VPN and com.r3studio.chute.action.TOGGLE_VPN.

A broadcast cannot show the system VPN consent dialog. START_VPN is therefore dropped in silence when consent has not been granted yet, while TOGGLE_VPN opens Chute instead: tap the switch there to grant consent — that tap also starts the tunnel — and the broadcasts work from then on. In Local Proxy service mode there is no consent to grant and both work straight away.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-25 00:02:29

results matching ""

    No results matching ""