49

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.

Run5k
  • 15,723
  • 24
  • 49
  • 63
sieppl
  • 591
  • 1
  • 5
  • 3

13 Answers13

50

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.

Scott Dudley
  • 745
  • 6
  • 10
  • regedit fix works – Leos Literak Feb 05 '20 at 08:02
  • 8
    How about Linux? – Eric Apr 16 '20 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. – SilverSideDown May 07 '20 at 13:11
  • For Yandex Browser on MacOS: `defaults write ru.yandex.desktop.yandex-browser ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true` – ckesc May 12 '20 at 23:55
  • 3
    The option is not working on Chrome Version 84.0.4147.89. Any suggestions? – Mike Jul 15 '20 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 01 '20 at 17:33
  • With the help of this answer, we were able to add registry keys for both Chrome and Edige for our enterprises solution. Those keys are `Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\URLAllowlist` and `Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLAllowlist`. Best. similar example is similar to the answer @Joe Prettyman gives below. – jaredbaszler Jan 15 '21 at 19:13
  • NOTE: This only works over https on Windows with Chrome. – jpgeek Apr 01 '21 at 12:01
  • @Mike @jpgeek for non https websites, the `External​Protocol​Dialog​Show​Always​Open​Checkbox` doesn't work, but adding `yourprotocole://*` to the [`URLAllowlist`](https://chromeenterprise.google/policies/#URLAllowlist) does. – deltonio2 Aug 03 '21 at 16:02
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
CrazyTim
  • 117
  • 8
yousef yahia
  • 131
  • 1
  • 2
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

tacoscool
  • 61
  • 1
  • 2
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!

Steve
  • 31
  • 2
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
  • 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. – jaredbaszler Jan 15 '21 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

Adam Spiers
  • 131
  • 6
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.

-.-

Kropotoff
  • 11
  • 1
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

Keith Miller
  • 8,704
  • 1
  • 15
  • 28
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.

eberblk kk
  • 11
  • 2
1

For macos execute the following in the terminal

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

And examine chrome://policy afterwards

Max Prokopov
  • 111
  • 2
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 />
-2

the correct reg entry for me is:

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