usebruno/bruno · error · Error

Linux proxy detection failed: ${error instanceof Error ? err

Error message

Linux proxy detection failed: ${error instanceof Error ? error.message : String(error)}

What it means

Outer wrapper in LinuxProxyResolver.detect that re-wraps any inner failure (including the 'No Linux proxy configuration found' case) with a 'Linux proxy detection failed:' prefix. The original error message is preserved in the suffix.

Source

Thrown at packages/bruno-requests/src/network/system-proxy/utils/linux.ts:45

        () => this.getEnvironmentFileProxy(),
        () => this.getSystemdProxy()
      ];

      for (const method of detectionMethods) {
        try {
          const proxy = await method();
          if (proxy) {
            return proxy;
          }
        } catch (error) {
          // Continue to next method if this one fails
          continue;
        }
      }

      throw new Error('No Linux proxy configuration found');
    } catch (error) {
      throw new Error(`Linux proxy detection failed: ${error instanceof Error ? error.message : String(error)}`);
    }
  }

  private async getGSettingsProxy(execOpts: ExecFileOptions): Promise<ProxyConfiguration | null> {
    try {
      const mode = await safeExec('gsettings', ['get', 'org.gnome.system.proxy', 'mode'], execOpts);

      // Handle PAC (auto) mode
      if (mode === '\'auto\'') {
        const autoConfigUrl = await safeExec('gsettings', ['get', 'org.gnome.system.proxy', 'autoconfig-url'], execOpts);
        const cleanUrl = (autoConfigUrl || '').replace(/'/g, '').trim();
        if (cleanUrl) {
          return {
            http_proxy: null,
            https_proxy: null,
            no_proxy: null,
            pac_url: cleanUrl,
            source: 'linux-system'

View on GitHub (pinned to 9bdd81c7bd)

Solutions

  1. Inspect the embedded suffix message to find the real cause (e.g. 'No Linux proxy configuration found' vs a spawn ENOENT).
  2. Ensure gsettings (GNOME) or kwriteconfig5 (KDE) is installed and on PATH for the process user.
  3. Fall back to environment-variable proxies (http_proxy/https_proxy) if desktop tooling is unavailable.

Example fix

// before
const cfg = await resolver.getSystemProxy();

// after: surface the underlying cause for routing
catch (e) {
  const msg = e.message;
  if (msg.endsWith('No Linux proxy configuration found')) return DIRECT_CONFIG;
  throw e;
}
Defensive patterns

Strategy: try-catch

Try / catch

try { return await linuxResolver.detect(); } catch (e) { const m = e.message; if (m.endsWith('No Linux proxy configuration found')) return DIRECT; throw e; }

Prevention

When it happens

Trigger: Any uncaught exception from a Linux detection routine — gsettings exec crash, permission error, or the no-config sentinel — gets re-thrown here.

Common situations: gsettings binary missing or not on PATH; timeout exceeded while spawning helper processes; safeExec rejecting for a non-zero exit on a detection command.

Related errors


AI-assisted analysis of usebruno/bruno@9bdd81c7bd (2026-08-13). Data as JSON: /api/errors/cfa2cee7725b285c. Report an issue: GitHub.