Skip to content

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

Description

@craxal

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 Imported certificates are ignored when proxy source is System proxy (proxy setting silently switches networking stack) #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

Metadata

Metadata

Assignees

No one assigned

    Labels

    ⚙️ proxyRelated to proxy settings

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions