50

We have configured chrome to open tel: links with Skype. One computer it does not open straight Skype after clicking a tel-link, but asks if skype should be opened (in a popup).

I tried to reset Chrome and tried to change the handler to another software to test if the problem maybe is with Skype. But it seems Chrome is generally asking for confirmation before opening an external application.

How can we configure Chrome to not ask for confirmation over and over? This is on Windows 10.

3
  • Doesn't the popup have a checkbox to always allow that specific link type? Sep 12, 2019 at 11:05
  • 1
    @grawity No it does not. Just "Open" or "Cancel".
    – sieppl
    Sep 12, 2019 at 11:37
  • Chrome developers see you as the product they can sell to advertisers.
    – null
    Apr 15, 2020 at 10:12

14 Answers 14

52

This can now be done with Chrome 79+. Thanks to the Reddit link from @Kropotoff's earlier answer, you can restore the "Always open these types of links in the associated app" option by updating your system settings.

For Windows:

Apply the "External​Protocol​Dialog​Show​Always​Open​Checkbox" registry policy

Or edit the registry and add a REG_DWORD registry entry to:

Software\Policies\Google\Chrome\ExternalProtocolDialogShowAlwaysOpenCheckbox

For macOS:

defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true

At least on Mac, it seems you need to quit and restart Chrome before the option becomes available.

Another Method

As an alternative to enabling the checkbox, then launching Chrome to select the checkbox, and ensuring it is persisted in the Chrome profile, it also appears to be possible to whitelist specific protocol handler URIs via the command line. This is helpful for Selenium and other automation, meaning that the URIs open without user intervention and you don't need to pre-configure the browser.

Assuming that your protocol handlers are myprotocol1://whatever and myprotocol2://whatever, you can do this on Mac. If you go this route, it doesn't look like you need to bother with the checkbox setting above.

defaults write com.google.Chrome URLAllowlist -array 'myprotocol1://*' 'myprotocol2://*' 'myprotocol3://*'

The name 'URLAllowlist' is supported from Chrome 85 onward and it is required for Chrome 100+; earlier versions of Chrome (15-85) also supported 'URLWhitelist' in place of 'URLAllowlist', but URLWhitelist was deprecated and then removed.

I have not tried this on Windows, but it looks like there is guidance on the enterprise policy page for URLAllowlist.

10
  • regedit fix works Feb 5, 2020 at 8:02
  • 8
    How about Linux?
    – Eric
    Apr 16, 2020 at 10:45
  • defaults write worked for me for macOS Chrome, but would love equivalent for Edge. "defaults read com.microsoft.Edge ExternalProtocolDialogShowAlwaysOpenCheckbox" says it's invalid. May 7, 2020 at 13:11
  • 3
    The option is not working on Chrome Version 84.0.4147.89. Any suggestions?
    – Mike
    Jul 15, 2020 at 21:57
  • 2
    URLWhitelist is obsolete. Use URLAllowlist instead. And to avoid overwriting previous rules, use -array-add. Wich give defaults write com.google.Chrome URLAllowlist -array-add 'myprotocole://*'
    – acucchieri
    Dec 1, 2020 at 17:33
13

Simple fix for Windows - make a .reg file with the following inside it and run it:

(For Chrome and chromium Edge)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001
1
  • 4
    Doesn't work on Chrome Version 86.0.4240.198 :(
    – Anonymouse
    Nov 26, 2020 at 11:05
6

Solution for Linux

sudo mkdir -p /etc/opt/chrome/policies/{managed,recommended}
echo '{"ExternalProtocolDialogShowAlwaysOpenCheckbox": true}' | sudo tee /etc/opt/chrome/policies/managed/protocol_open.json > /dev/null

If you are using chromium instead of chrome then use /etc/chromium instead of /etc/opt/chrome.

No restart required.

From the chromium administrators documentation

3
  • Thanks, this works indeed without restart.
    – user84207
    Sep 5, 2020 at 17:25
  • 2
    Thanks a lot; however this only allows a permanent setting per site. See my answer for a more general per-protocol solution. Sep 24, 2020 at 11:19
  • How about Microsoft Edge any ideas? I could not find the folder etc or etc/opt mentioned.
    – fatFeather
    Dec 19, 2023 at 20:07
3

Found this while trying to fix the same sort of issue. My new win10 install with current chrome would ask if chrome could open utorrent, similar to my work machine asking to open citrix launcher every time I start a virtual machine.

What worked for me:

Chrome settings - Site settings - Handlers - Do not allow any site to handle protocols - DISABLED

Then when I hit a magnet link, the same confirmation box opens but has a checkbox to always remember this choice. Subsequent magnet links now open directly into utorrent with no notification. I assume the tel: uri would behave the same when selecting the app of your choice. Let us know!

3

I was never able to get the Checkbox to show. However, I was able to get the dialog suppressed by adding the ExternalProtocolDialogShowAlwaysOpenCheckbox setting and Edge URLAllowlist and Chrome URLWhitelist. Having both of these configured allows the link to run without nagging. I made the following changes to the registry. One for Chrome and one for Edge.

I put Skype in the URL List shown below; however I used another protocol that was specific to my organization.

For Edge: (This appears to only work for new Edge built on Chromium)

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\URLAllowlist]
"1"="Skype://*"

[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Edge]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

For Chrome:

[HKEY_CURRENT_USER\Software\Policies\Google\Chrome\URLWhitelist]
"1"="Skype://*"

[HKEY_CURRENT_USER\SOFTWARE\Policies\Google\Chrome]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001
1
  • This solution was what we had to do as well. I'm not sure you need the ExternalProtocolDialogShowAlwaysOpenCheckbox key if you insert the first key for each browser but we did both and it work so we didn't test without 2nd key for each browser. Jan 15, 2021 at 19:11
3

Updated answer for Linux, Sept 2020

I know the original question was for Windows, but the answers and comments clearly show appetite for an answer for Linux too. This is an update to @tacoscool's answer which is very helpful, but only covers the ExternalProtocolDialogShowAlwaysOpenCheckbox policy for ensuring the "Always open..." checkbox is visible.

If instead you want to skip the dialog for a certain protocol (e.g. tel:..., or org-protocol:... for capturing within Emacs's Org mode) across all sites without any prompting, as requested by the original question, you need to use the URLWhitelist policy for Chrome 85 and earlier, and URLAllowlist for Chrome 86 and later. If you are on 85 or earlier but want a future-proof solution, you can combine them both into a single file, e.g.

sudo bash
mkdir -p /etc/opt/chrome/policies/{managed,recommended}
cat <<EOF >/etc/opt/chrome/policies/managed/allow_tel_protocol.json
{
  "URLWhitelist": [
    "tel:*"
  ],
  "URLAllowlist": [
    "tel:*"
  ]
}
EOF

Presumably this file could be placed in /etc/opt/chrome/policies/recommended instead of /etc/opt/chrome/policies/managed but I haven't tested that.

You can verify that these files are having the correct effect by visiting chrome://policy.

Note that this is a policy which will take effect for all users. If you want to set it per user then I think you have to find the equivalent key in the user profile's preferences JSON file, which is typically ~/.config/google-chrome/Default/Preferences or similar on Linux. According to other posts, it should be enough to ensure that you have something like

"protocol_handler":{"excluded_schemes":{"tel":false}}

in this Preferences file (I wonder why it's false not true, but OK whatever...). However when I shut down Chrome, edited the file, and restarted Chrome, it automatically removed that setting every time. Maybe I was doing something wrong, or maybe this no longer works - I'm on Chrome 85.

Finally, if you want to achieve the same in Chromium or Brave, replace all mentions above of /etc/opt/chrome with /etc/chromium

2

For macos execute the following in the terminal

defaults write com.google.Chrome URLAllowlist -array-add -string 'tel://*'

And examine chrome://policy afterwards

1
  • Thanks, worked for me in macOS Big Sur with Chrome 95.
    – memeplex
    Oct 23, 2021 at 6:54
1

I'm having the same issue different OS. Did Google release a chrome update that removed the "don't ask again" checkbox?

EDIT: my research is not encouraging: https://www.reddit.com/r/chrome/comments/d3v4yr/dont_ask_again_checkbox_on_popups_not_available/

Seem like there was indeed an update that removed this feature.

-.-

0
1

I see this is old, & I have no way to test, but nobody mentioined settting the tel: protocol via Settings>Apps>Default apps>(tiny link)Choose default apps by protocol: enter image description here

1

In my case, I would like to DISABLE the association of the WhatsApp Windows Application with the URL:whatsapp protocol in Chrome (however it works for any browser) so that the popup does not appear again. I've tested on Windows 10.

Solution: I accessed regedit and deleted the HKEY_CLASSES_ROOT\whatsapp\ node.

0

If you don't know how to get it done. I've created a simple application to make it work seamlessly for both mac and pc. https://www.sendwhatsappmsg.com/open-whatsapp-desktop

0

ExternalProtocolDialogShowAlwaysOpen

Since the availability of Google Chrome v79 the ExternalProtocolDialogShowAlwaysOpen settings controls the behaviour of the "Always open" checkbox in external protocol dialog.

If this policy is set to True or not set, when an external protocol confirmation is shown, the user can select "Always allow" to skip all future confirmation prompts for the protocol on this site.

If this policy is set to False, the "Always allow" checkbox is not displayed and the user will be prompted each time an external protocol is invoked.


Solution

To make Chrome remember to always allow external protocol handlers to open links of this type in the associated app you need to add a key / value pair within registry as follows:

  • Data type: Boolean
  • Windows: REG_DWORD
    • Windows registry location: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExternalProtocolDialogShowAlwaysOpenCheckbox
    • Example value (Windows): 0x00000001
  • Mac/Linux preference name: ExternalProtocolDialogShowAlwaysOpenCheckbox
    • Example value (Linux): true
    • Example value (Mac): <true />
0

None of these answers worked for me. I was trying to have a website not ask me constantly whether I wanted to open the Shortcuts.app on macOS when clicking a link adhering to their advertised scheme (e.g. "shortcuts://run-shortcut?name=my-shortcut&input=text&text=foo").

Anyway, I had to edit a Chrome flag to get it to work. Go to chrome://flags and search for "Insecure origins treated as secure" or via direct link here: chrome://flags/#unsafely-treat-insecure-origin-as-secure

I then had to add the URL for the website I wanted it to work on (e.g. http://example.com) and made sure to choose "Enabled". Upon saving, Chrome will tell you it needs to restart—so go ahead and do that. Afterwards, going to that URL and clicking the offending link brings up a confirmation window again asking if you want to open the app, but this time there's a checkbox allowing you to always open the app without future prompts.

enter image description here

Hope this helps someone out there!

Reference:

SO Answer that helped me https://stackoverflow.com/a/63557253/1112947

Apple Shortcuts Scheme https://support.apple.com/guide/shortcuts/run-a-shortcut-from-a-url-apd624386f42/ios

-1

the correct reg entry for me is:

[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome] "ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

3
  • Your solution had already been suggested twice.
    – Ramhound
    Mar 22, 2020 at 22:16
  • 2
    @Ramhound: No, actually, there were two previous similar answers. Greg here is saying that both of the other answers got the registry key wrong. Mar 23, 2020 at 6:11
  • Yup, this was the only one that worked for me, perhaps because my computer is not domain-joined? May 30, 2020 at 5:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .