Cannot save settings.json from the UI when it is a symbolic link #21729

Open
opened 2026-01-31 07:53:21 +00:00 by claunia · 6 comments
Owner

Originally created by @tunaflsh on GitHub (May 17, 2024).

Windows Terminal version

1.19.11213.0

Windows build number

10.0.22631.3593

Other Software

No response

Steps to reproduce

  1. Replace settings.json with a symbolic link to a settings.json file somewhere else.
  2. Start terminal and open settings.
  3. Perform changes and hit Save

Expected Behavior

The changes get saved into the settings.json file that the symbolic link points to.

Actual Behavior

Nothing happens.

However if I change the symbolic link to a hard link, the changes get saved but then I run into the issue #14730

Originally created by @tunaflsh on GitHub (May 17, 2024). ### Windows Terminal version 1.19.11213.0 ### Windows build number 10.0.22631.3593 ### Other Software _No response_ ### Steps to reproduce 1. Replace `settings.json` with a symbolic link to a `settings.json` file somewhere else. 2. Start terminal and open settings. 3. Perform changes and hit `Save` ### Expected Behavior The changes get saved into the `settings.json` file that the symbolic link points to. ### Actual Behavior Nothing happens. However if I change the symbolic link to a hard link, the changes get saved but then I run into the issue #14730
claunia added the Issue-BugProduct-TerminalArea-SettingsUI labels 2026-01-31 07:53:22 +00:00
Author
Owner

@github-actions[bot] commented on GitHub (May 17, 2024):

Hi I'm an AI powered bot that finds similar issues based off the issue title.

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

@github-actions[bot] commented on GitHub (May 17, 2024): Hi I'm an AI powered bot that finds similar issues based off the issue title. Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you! ### Closed similar issues: - [Settings editor erases the symbolic link rather than following it (#10787)](https://github.com/microsoft/terminal/issues/10787), similarity score: 0.85 > Note: You can give me feedback by thumbs upping or thumbs downing this comment.
Author
Owner

@CrazyWolf13 commented on GitHub (May 18, 2024):

Possibly a slightly related FR:
https://github.com/microsoft/terminal/issues/17277

@CrazyWolf13 commented on GitHub (May 18, 2024): Possibly a slightly related FR: https://github.com/microsoft/terminal/issues/17277
Author
Owner

@Firehawke commented on GitHub (May 29, 2024):

Just hit this one myself. I'm using Dotter to git repo a fair bit of my configuration, including Windows Terminal, and I hit that the UI wasn't actually saving any changes and editing the JSON would only work if I completely exit and reload WT-- it's not detecting any changes to the symlinked config file and hotloading.

@Firehawke commented on GitHub (May 29, 2024): Just hit this one myself. I'm using Dotter to git repo a fair bit of my configuration, including Windows Terminal, and I hit that the UI wasn't actually saving any changes and editing the JSON would only work if I completely exit and reload WT-- it's not detecting any changes to the symlinked config file and hotloading.
Author
Owner

@DHowett commented on GitHub (Jul 3, 2024):

So, my working theory is that it is saving but it is not reloading. This is because we actually use hot reload to power the Save button actually-looking-like-it-has-saved.

#1812 reported a similar issue, and we closed it as "By Design" on the grounds that...

Image

happy five year anniversary to my own comment, wow

I'm not convinced the situation is any better, but I feel like there's something we could do specifically to improve Save.

@DHowett commented on GitHub (Jul 3, 2024): So, my working theory is that it _is_ saving but it is not reloading. This is because we actually use hot reload to power the Save button actually-looking-like-it-has-saved. #1812 reported a similar issue, and we closed it as "By Design" on the grounds that... ![Image](https://github.com/user-attachments/assets/ee5dad7e-4cde-4153-ba9d-e434d5f87a79) _happy five year anniversary to my own comment, wow_ I'm not convinced the situation is any better, but I feel like there's something we could do specifically to improve `Save`.
Author
Owner

@Firehawke commented on GitHub (Jul 4, 2024):

How about a workaround of a "force reload" button in the settings panel? It's not a great solution, but it's at least SOMETHING for the moment.

Edit to add: It's been a bit since I looked at it, but I seem to recall opening the JSON in VSCode right after doing a save and it not showing any of the changes I'd just made. If that's the case, then a forced reload button wouldn't help.. but if it IS saving, that forced reload button would at least be a viable (if not great) workaround.

@Firehawke commented on GitHub (Jul 4, 2024): How about a workaround of a "force reload" button in the settings panel? It's not a great solution, but it's at least SOMETHING for the moment. Edit to add: It's been a bit since I looked at it, but I seem to recall opening the JSON in VSCode right after doing a save and it not showing any of the changes I'd just made. If that's the case, then a forced reload button wouldn't help.. but if it IS saving, that forced reload button would at least be a viable (if not great) workaround.
Author
Owner

@daviewales commented on GitHub (Jan 8, 2026):

Confirmed that it is saving, but not reloading.

The current behaviour means that if you use a symlink for your settings.json, then you have to relaunch the whole Terminal app to see the changes.

While the ideal solution would be to enable hot-reload for symlinks, a partial solution might just force a reload when the user clicks the 'Save' button, without relying on the hot-reload functionality.

Regarding not listening to events from the parent directory of the symlink due to high event volume, I expect in most cases that would be an edge case. Most people will not use symlinks for their settings.json at all. Those who do are likely storing the true file in a dotfiles repository, which probably has reasonably low event volume.

So, I feel that it would be better to enable hot-reload for symlinks, with the caveat that it will cause trouble if you put the target file in your home directory. (You could even make this a setting, with a warning. And if the event volume is too high, you could pop up a notification to the user, and tell them to put their settings.json somewhere quieter...)

@daviewales commented on GitHub (Jan 8, 2026): Confirmed that it _is_ saving, but not reloading. The current behaviour means that if you use a symlink for your `settings.json`, then you have to relaunch the whole Terminal app to see the changes. While the ideal solution would be to enable hot-reload for symlinks, a partial solution might just force a reload when the user clicks the 'Save' button, without relying on the hot-reload functionality. Regarding not listening to events from the parent directory of the symlink due to high event volume, I expect in most cases that would be an edge case. Most people will not use symlinks for their `settings.json` at all. Those who do are likely storing the true file in a dotfiles repository, which probably has reasonably low event volume. So, I feel that it would be better to enable hot-reload for symlinks, with the caveat that it will cause trouble if you put the target file in your home directory. (You could even make this a setting, with a warning. And if the event volume is too high, you could pop up a notification to the user, and tell them to put their `settings.json` somewhere quieter...)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#21729