TL;DR
Run the following Python code:
import os
import sys
import json
import subprocess
import psutil
def get_version_and_user_data_path():
os_and_user_data_paths = {
'win32': {
'stable': '~/AppData/Local/Microsoft/Edge/User Data',
'canary': '~/AppData/Local/Microsoft/Edge SxS/User Data',
'dev': '~/AppData/Local/Microsoft/Edge Dev/User Data',
'beta': '~/AppData/Local/Microsoft/Edge Beta/User Data',
},
'linux': {
'stable': '~/.config/microsoft-edge',
'canary': '~/.config/microsoft-edge-canary',
'dev': '~/.config/microsoft-edge-dev',
'beta': '~/.config/microsoft-edge-beta',
},
'darwin': {
'stable': '~/Library/Application Support/Microsoft Edge',
'canary': '~/Library/Application Support/Microsoft Edge Canary',
'dev': '~/Library/Application Support/Microsoft Edge Dev',
'beta': '~/Library/Application Support/Microsoft Edge Beta',
},
}
for platform, version_and_user_data_path in os_and_user_data_paths.items():
available_version_and_user_data_path = {}
if sys.platform.startswith(platform):
for version, user_data_path in version_and_user_data_path.items():
user_data_path = os.path.abspath(os.path.expanduser(user_data_path))
if os.path.exists(user_data_path):
available_version_and_user_data_path[version] = user_data_path
return available_version_and_user_data_path
raise Exception('Unsupported platform %s' % sys.platform)
def shutdown_edge():
terminated_edges = set()
for process in psutil.process_iter():
try:
if sys.platform == 'darwin':
if not process.name().startswith('Microsoft Edge'):
continue
elif os.path.splitext(process.name())[0] != 'msedge':
continue
elif not process.is_running():
continue
elif process.parent() is not None and process.parent().name() == process.name():
continue
location = process.exe()
process.kill()
terminated_edges.add(location)
except psutil.NoSuchProcess:
pass
return terminated_edges
def get_last_version(user_data_path):
last_version_file = os.path.join(user_data_path, 'Last Version')
if not os.path.exists(last_version_file):
return None
with open(last_version_file, 'r', encoding='utf-8') as fp:
return fp.read()
def patch_local_state(user_data_path):
local_state_file = os.path.join(user_data_path, 'Local State')
if not os.path.exists(local_state_file):
print('Failed to patch Local State. File not found', local_state_file)
with open(local_state_file, 'r', encoding='utf-8') as fp:
local_state = json.load(fp)
if local_state['variations_country'] != 'US':
local_state['variations_country'] = 'US'
with open(local_state_file, 'w', encoding='utf-8') as fp:
json.dump(local_state, fp)
print('Succeeded in patching Local State')
else:
print('No need to patch Local State')
def patch_preferences(user_data_path):
for file in os.listdir(user_data_path):
if not os.path.isdir(file) and file != 'Default' and not file.startswith('Profile '):
continue
preferences_file = os.path.join(user_data_path, file, 'Preferences')
if not os.path.exists(preferences_file) or not os.path.isfile(preferences_file):
continue
with open(preferences_file, 'r', encoding='utf-8') as fp:
preferences = json.load(fp)
if preferences['browser'].get('chat_ip_eligibility_status') in [None, False]:
preferences['browser']['chat_ip_eligibility_status'] = True
with open(preferences_file, 'w', encoding='utf-8') as fp:
json.dump(preferences, fp)
print('Succeeded in patching Preferences of', file)
else:
print('No need to patch Preferences of', file)
def main():
version_and_user_data_path = get_version_and_user_data_path()
if len(version_and_user_data_path) == 0:
raise Exception('No available user data path found')
terminated_edges = shutdown_edge()
if len(terminated_edges) > 0:
print('Shutdown Edge')
for version, user_data_path in version_and_user_data_path.items():
last_version = get_last_version(user_data_path)
if last_version is None:
print('Failed to get version. File not found', os.path.join(user_data_path, 'Last Version'))
continue
main_version = int(last_version.split('.')[0])
print('Patching Edge', version, last_version, '"'+user_data_path+'"')
patch_local_state(user_data_path)
patch_preferences(user_data_path)
if len(terminated_edges) > 0:
print('Restart Edge')
for edge in terminated_edges:
subprocess.Popen([edge, '--start-maximized'], stderr=subprocess.DEVNULL)
input('Enter to continue...')
if __name__ == '__main__':
main()
Original Article
This article was converted by Jianyue SimpRead; original source: zhuanlan.zhihu.com
Overview
This article introduces a method to resolve the issue where the Copilot icon does not appear in the top-right corner of the new Microsoft Edge browser. This method works across all Edge versions.
Testing confirms compatibility with Microsoft Edge on Windows, macOS, and Linux.
Additionally, the article concludes with an alternative solution—downloading an older Edge version—to serve as a fallback in case the primary method becomes obsolete.
Prerequisites
A working internet connection capable of accessing restricted regions is required. Restrictions apply only to Russia, Iran, Syria, Cuba, North Korea, Myanmar, Palestine, and East Timor. However, if using rule-based or traffic-splitting proxy configurations, ensure *.bing.com and bing.com domains are routed through the proxy.
Operating Systems: Windows 10, macOS Catalina, Debian
Tested Edge Versions:
- Stable: 120.0.2210.91 (Stable Channel) (64-bit) and 121.0.2277.83 (Stable Channel) (64-bit)
- Dev: 122.0.2353.0 (Official build) dev (64-bit)
Solution Strategy
Through step-by-step troubleshooting, we determined that the stable version of Edge stores user data in the following directories:
Windows: %APPDATA%\..\Local\Microsoft\Edge\User Data
Linux: $HOME/.config/microsoft-edge
macOS: $HOME/Library/Application Support/Microsoft Edge
Meanwhile, the Dev version stores its user data in:
Windows: %APPDATA%\..\Local\Microsoft\Edge Dev\User Data
Linux: $HOME/.config/microsoft-edge-dev
macOS: $HOME/Library/Application Support/Microsoft Edge Dev
The toggle controlling whether the Copilot icon appears in the browser’s top-right corner resides within certain configuration files under the user data directory: for version 120, it’s located in the Local State file; for versions 121 and later, it’s located in the Preferences file inside each profile folder.
Thus, modifying these files slightly suffices to restore the Copilot icon.
TL;DR: If you simply wish to restore the Copilot icon without delving into implementation details, proceed directly to the detailed steps below → Section 2. Modify Configuration Files → (3) Edit Configuration Files → Automated Modification, and run the provided Python script (or precompiled executable) to restore the Copilot icon.
Detailed Steps
1. Fully Close the Edge Browser
(1) Closing Edge on Windows and Linux
Ensure the browser is completely closed to prevent background processes from interfering (e.g., extensions keeping Edge active).
Click the three-dot menu in the top-right corner of the browser window and select “Close Microsoft Edge” from the dropdown.
On Windows, verify Edge has fully exited by checking the Task Manager’s “Details” tab for any msedge.exe processes. Manually terminate them if present; their absence confirms complete shutdown.
(2) Closing Edge on macOS
Hold Command + Q while focused on the Edge browser window to quit the application.
2. Modify Configuration Files
(1) Locate the User Data Directory
First, identify your OS and Edge version, then locate the corresponding user data directory using the paths above. For example, on Windows 10 with the stable Edge version, the path is %APPDATA%\..\Local\Microsoft\Edge\User Data.
- How to open this directory
-
On Windows 10:
- Method 1: Press
Win + Eto open File Explorer, paste the path into the address bar, and press Enter. - Method 2: Press
Win + R, typeexplorer "%APPDATA%\..\Local\Microsoft\Edge\User Data", and press Enter.
- Method 1: Press
-
On macOS:
- The stable Edge user data directory is
$HOME/Library/Application Support/Microsoft Edge.First, open$HOMEin Finder by pressingShift + Command + H. TheLibraryfolder is hidden by default. If it does not appear in your user home directory, pressShift + Command + .to reveal hidden files and folders. Note that if your system language is Chinese, this folder is named资源库. Then navigate step-by-step into this directory.
- The stable Edge user data directory is
(2) Determine Your Browser Version
In the Edge browser address bar, type edge://version and press Enter. The first line displayed shows the version number.
(3) Edit the Configuration File
Version 120
If your Edge browser version is 120.x.xxxx.xx, you need to modify the Local State file located in the user data directory. This is a plain-text JSON file—open it with any text editor.
Search for "variations_country":, and replace the immediately following "CN" with "US". The value inside the double quotes is a two-letter country code. When set to "CN", "RU", or other countries where Copilot is unavailable, the Copilot icon is suppressed. When set to "US", "FR", or other supported countries, Copilot becomes available.
In other words, change "variations_country":"CN" to "variations_country":"US".
Save and close the file after editing.
Version 121 and Later
If your Edge browser version is 121.x.xxxx.xx, 122.x.xxxx.xx, or any version ≥ 121, locate the user profile folders—such as Default, Profile 1, Profile 2, Profile 3, etc.—within the browser’s user data directory, then find the Preferences file inside each.
As widely known, Microsoft Edge supports multiple logged-in users/accounts, each maintaining its own isolated personal data. These per-user data are stored in separate subfolders under the browser’s user data directory. When only one user is signed in, their data reside in a folder named Default. Upon creating or signing into a second user, their data go into Profile 2; the third user’s data go into Profile 3, and so on.
For brevity, we refer to these folders (Default, Profile 2, Profile 3, etc.) collectively as user profile folders (or simply profiles), each storing the personal data of an individual Edge user.
Inside each such profile folder resides a file named Preferences, which is also a plain-text JSON file—open it with any text editor.
Search for "chat_ip_eligibility_status":, and replace the immediately following false with true.
That is, change "chat_ip_eligibility_status":false to "chat_ip_eligibility_status":true.
Note: When parsed as valid JSON, the key
chat_ip_eligibility_statusresides under thebrowserobject.
If the key chat_ip_eligibility_status does not exist in the file, manually add it: first search for "browser":{, then replace that exact string with "browser":{"chat_ip_eligibility_status":true,.
Save and close the file after editing.
To enable the Copilot icon for a specific user, locate and edit the Preferences file inside that user’s corresponding profile folder.
Important: For Edge versions 142 and later, if modifying the Preferences file fails to restore the Copilot icon, try instead editing the Local State file using the method described above for version 120.
When enabling Copilot for multiple profiles simultaneously, consider using automation scripts.
Automated Modification
Alternatively, write a Python script to perform the modification automatically—eliminating manual edits every time.
A complete, cross-platform, cross-version Python script:
https://github.com/jiarandiana0307/patch-edge-copilot
This script automatically shuts down Edge, modifies the appropriate configuration file based on the detected browser version, and restarts Edge—no manual steps required (e.g., quitting Edge or editing config files).
If Python is not installed on your machine, you may use alternative tools implemented in Go, which compile directly into standalone executables:
https://github.com/xiaox0321/patch-edge-copilot
https://github.com/emmm1245/EdgeCopilotFix
Go to the Releases page of each project to download pre-built binaries; save them locally and double-click to run.
3. Use a Proxy and Launch Edge
At this point, the Copilot icon should reappear in the top-right corner.
Note: If Edge is launched without a proxy connection afterward, the Copilot icon may disappear again. Simply repeat the above steps.
Summary
—
Below is the author’s personal speculation regarding the underlying mechanism:
The Copilot icon disappears from Edge’s top-right corner because the browser previously accessed Bing’s AI services using a domestic IP address. As a result, Edge identifies the user as being located within mainland China. Since Microsoft does not offer Bing AI services in China, Edge disables the feature entirely.
By deleting or modifying Edge’s configuration files, the local record of prior domestic IP access to Bing’s AI services is erased—causing Edge to mistakenly assume the user is outside China, thereby restoring access to Bing AI functionality.
Reinstalling Edge alone has no effect, because traces of domestic IP access are stored in dedicated application data paths—and reinstalling does not clear those persistent records. Thus, Edge continues to treat the user as domestic and suppresses AI features.
As Edge continues updating, its detection and restriction mechanisms against domestic IP access to AI services may become increasingly strict. Should the above methods cease working, you may attempt deleting the entire Edge user data folder (e.g., %AppData%\..\Local\Microsoft\Edge\User Data)—but be aware this will erase all Edge user data.
Additional Note: Downloading an Older Edge Version
A post on the NewBing Baidu Tieba forum suggests that installing an older Edge version resolves the issue.
Source: https://tieba.baidu.com/p/8782048284
Below demonstrates how to install an older Edge version on Windows; the same procedure applies to Linux and macOS.
1. Download an Older Edge Installer
Visit the official download page:
https://www.microsoft.com/en-us/edge/business/download?form=MA13H4
Scroll down to locate instructions for downloading legacy Edge versions. Select Stable version 119 and choose the installer matching your OS. Download and install normally.
If version 119 is unavailable on the current page, use the Internet Archive (requires proxy access) to retrieve a saved snapshot of the old download page containing version 119. Here is the most recent archived copy featuring version 119:
Direct download links for Edge v119.0.2151.97:
Linux (.rpm): https://packages.microsoft.com/yumrepos/edge/microsoft-edge-stable-119.0.2151.97-1.x86_64.rpm
Linux (.deb): https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_119.0.2151.97-1_amd64.deb
Windows 64-bit: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/1a0dd55d-618e-471b-92fb-5fe178a0e52d/MicrosoftEdgeEnterpriseX64.msi
Windows 32-bit: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/bc755c09-f5bc-42df-9ea8-54297b2466ee/MicrosoftEdgeEnterpriseX86.msi
2. Uninstall Edge Using the Remove-MS-Edge Tool
This process preserves all existing Edge user data—safe to proceed.
GitHub repository link:
https://github.com/ShadowWhisperer/Remove-MS-Edge
Below demonstrates using the GUI version:
(1) Download Remove-Edge_GUI.exe from:
https://github.com/ShadowWhisperer/Remove-MS-Edge/blob/main/Remove-Edge_GUI.exe?raw=true
Ignore any antivirus warnings; continue downloading and keep the executable.
(2) Run the program, click Remove, and wait until Finish appears.
3. Install Edge
Run the installer downloaded in Step 1 to complete installation.
4. Disable Auto-Updates
To prevent Edge from auto-updating to newer versions, disable both the update service and rename related update executables.
On Windows, for example, recursively scan %ProgramFiles(x86)%\Microsoft and its subdirectories, then rename all update-related executables (e.g., MicrosoftEdgeUpdate.exe, elevation_service.exe). Once renamed, Edge cannot locate its updater and thus cannot self-update. To re-enable updates later, simply rename the files back to their original names.
A Python script implementing this functionality:
https://github.com/jiarandiana0307/edge-update-switch
This script supports both Windows and macOS.


