Force Google Chrome Incognito mode on startup

Much like its competitors, Chrome allows an Incognito mode which will discard any browser data after the session ends. This is great however there is no way (that I could find) to tell Chrome to always start in this mode.

Yes you can change the shortcut on your desktop and add the -incognito switch but this is not always invoked. If Chrome is your default browser Start > Run > http://www.google.com will not launch it in Incognito Mode. If any applications start the browser without using the shortcut (through protocol or file associations) the browser will start in normal mode.

There is no .conf or .ini or .json file you can edit to tell Chrome to always start in Incognito Mode, which seems like a strange omission from the Chrome dev team. By altering a few default settings, FF and IE can be told to remove all traces of browser data upon exiting. The only thing in Chrome that comes close is under Privacy > Cookies section. You can remove all cookies and "other site data" when exiting the browser but this is not true Incognito.

What we can do is modify some registry settings and tell Windows to start a batch file instead of the chrome.exe main application. When Chrome is made the default browser it modifies a few registry keys to tell Windows where to go when associating a protocol with an application (in our case: HTTP and HTTPS).

So let's tell it to use chrome.cmd instead of chrome.exe:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command]
@="\"V:\\Tools\\start_chrome_incognito.cmd\" -- \"%1\""

[HKEY_CLASSES_ROOT\http\shell\open\command]
@="\"V:\\Tools\\start_chrome_incognito.cmd\" -- \"%1\""

[HKEY_CLASSES_ROOT\https\shell\open\command]
@="\"V:\\Tools\\start_chrome_incognito.cmd\" -- \"%1\"

[HKEY_CLASSES_ROOT\htmlfile\shell\open\command]
@="\"V:\\Tools\\start_chrome_incognito.cmd\""

[HKEY_CLASSES_ROOT\htmlfile\shell\opennew\command]
@="\"V:\\Tools\\start_chrome_incognito.cmd\""

Save this as chromefileassociation_fix.reg and run it. For reasons I have yet to understand, you can't use environment variables in the registry path. Maybe the host process does not have an environment when it executes the application? No clue

You cannot add the switches (-incognito) directly to the registry key. This would be more convenient since it wouldn't require a separate batch file to maintain, but this breaks the host process that attempts to start the application.

Create a startchromeincognito.cmd in your C:\Tools folder and put this into it:

@echo off
start /D"%LocalAppData%\Google\Chrome\Application" chrome.exe -incognito --purge-memory-button --memory-model=low %*  
:: for XP use the following
:: start /D"%AppData%\Google\Chrome\Application" chrome.exe -incognito --purge-memory-button --memory-model=low %*

Add whatever options you want before %* and you should be good to go.

Now, when you start Chrome using something like Start > Run > http://www.google.com you will be browsing in Incognito mode.

Hacky but it works.

Google, please add an option to do this natively thanks.