microsoft / microsoft/AzureStorageExplorer

Auto-manage proxy silently rewrites the user's proxy source setting with no notification

Open
#9,167 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

:gear: proxy
Dominant language
No language data
Stars
452
Forks
92
Avg merge
15h 20m
Merged PRs (30d)
3

Description

Summary

When auto-manage proxy settings is enabled, Storage Explorer can persist a change to application.proxy.source on the user's behalf without telling them. The change is recorded in the log and in telemetry, but nothing surfaces in the UI. The user's saved preference ends up different from what they set, with no indication of when or why it changed.

Details

src/Standalone/app/main/Net/NetProvider.ts retries a failed Node-stack request on the Electron stack, and on success writes the proxy source to systemProxy:

result.trackedRequest.request.on("response", async () => {
    Log.info(`Retry of request ${requestId} with electron for reason ${retryReason} received response, changing proxy source to 'systemProxy'.`);
    TelemetryManager.sendEvent("StorageExplorer.ElectronNet.ProxySourceChanged", { source: "systemProxy", reason: retryReason });
    await ConfigurationManager.setConfiguration("application.proxy.source", "systemProxy");
    resolve(true);
});

The retry itself is by design -- it is the mechanism that recovers a connection that would otherwise fail. The gap is that the persisted configuration change is invisible. The three signals emitted are a Log.info call, a telemetry event, and the settings value itself. None of them are something a user encounters in normal use.

Impact
  • A user who deliberately chose a proxy source finds it changed later with no explanation. From their point of view the setting did not stick.
  • Because proxy source also selects the networking stack (see #9145), a silent switch to systemProxy can change certificate-trust behavior as a side effect. A user debugging a cert problem has no reason to suspect their proxy setting was rewritten.
  • Support cases are harder to diagnose: the reported configuration does not match what the user believes they configured, and the only record is in logs the user has not collected.
Suggested directions
  • Surface a non-blocking notification when auto-manage changes the proxy source, naming the old and new value and the reason for the change.
  • Offer a way to revert from that notification, and/or a way to opt out of auto-manage from the same surface.
  • Consider whether the change needs to be persisted at all, or whether it can apply for the session and let the user promote it.
Related
  • #9145 (imported certs ignored on the Electron stack -- describes the trust consequence of this switch)
  • #7289 (auto-manage proxy expanded to ENOTFOUND -- expanded the conditions that trigger the switch)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/Standalone/app/main/Net/NetProvider.ts at the Electron-stack retry response handler and review related issues #9145 and #7289 for the proxy-switch context. Determine the appropriate user-facing notification and whether reverting, opting out, or avoiding persistence is in scope. Done should make auto-managed proxy changes visible with their reason and provide the agreed recovery path.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, node.js, typescript
Domain
desktop, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.