Rant about IDE 2.X proxy issues on Windows (but also on Linux and MacOS)

Company requires a proxy with no password authentication for connection.
Arduino IDE 2.X won't start. I configured the proxy on the arduino-cli.yaml and it made no difference.

Set the proxy on powershell and tried launching from the powershell and still nothing.

IDE 1.X works fine.

I had the same issues on my Linux and MacOS machines with IDE 2.X and both took a long time to find a workaround, with the official suggestions of configuring proxy directly on Arduino files simply not working.

1.X has no issues transparently connecting through the proxy already set in the system. Why can't 2.X just do the same?

Hi @nxfltn. I'm going to ask you to provide some additional information that might help us to identify the problem.


:red_exclamation_mark: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Close all Arduino IDE windows if the IDE is already running.
  2. Start Windows "File Explorer".
  3. Open the Arduino IDE installation folder.
    β“˜ The default installation location is at one of the following paths:
    • C:\Program Files\Arduino IDE
      
    • C:\Users\<username>\AppData\Local\Programs\Arduino IDE
      
      (where <username> is your Windows username)
      :red_exclamation_mark: If looking for it with your file manager or command line, note that the AppData folder is hidden by default. On Windows "File Explorer", you can make it visible by opening the "View" menu, then checking the box next to "☐ Hidden items".
  4. In the folder listing of the Arduino IDE installation folder, hold the Shift key while clicking the right hand button on the mouse.
    A context menu will open
  5. Select "Open PowerShell window here" from the menu.
    Windows PowerShell will now open with the current directory set to the Arduino IDE installation folder.
  6. Type the following command in the PowerShell window:
    & ".\Arduino IDE"
    
  7. Press the Enter key.
    Debug output should now be printed to the PowerShell window as Arduino IDE starts.
  8. Wait until you are sure the IDE startup has gone into the hang state
    (as indicated by no additional output being printed to the terminal).
  9. Switch back to the PowerShell window if the Arduino IDE window took the focus.
  10. Press the Ctrl+Shift+A keyboard shortcut.
    This will select all the text in the PowerShell window.
  11. Press the Ctrl+C keyboard shortcut.
    This will copy the contents of the PowerShell window to the clipboard.
  12. Open a reply here on this forum topic by clicking the "Reply" button.
  13. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  14. Press the Ctrl+V keyboard shortcut.
    This will paste the output into the code block.
  15. Move the cursor outside of the code block markup before you add any additional text to your reply.
  16. Click the "Reply" button to publish the post.

Please let us know if you have any questions or problems while following those instructions.

The Arduino IDE developers are tracking the task of adding an automatic proxy settings detection feature like Arduino IDE 1.x has here:

If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:


:red_exclamation_mark: Please only comment on the GitHub issue thread if you have new technical information that will assist with the resolution. General discussion and support requests are always welcome here on Arduino Forum.


Sorry for the critical post with no suggestion for improvement and thank you for the quick reply.

Here is the output from the prompt (proxy address changed for privacy, but I confirmed it's the correct address, as it is configured in this same machine I am using to reply now and on the other machines and other softwares):

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

Loading personal and system profiles took 1064ms.
(base) PS C:\Users\aghen> cd C:\Users\aghen\AppData\Local\Programs\Arduino IDE
Set-Location : A positional parameter cannot be found that accepts argument 'IDE'.
At line:1 char:1
+ cd C:\Users\aghen\AppData\Local\Programs\Arduino IDE
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Location], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

(base) PS C:\Users\aghen> cd "C:\Users\aghen\AppData\Local\Programs\Arduino IDE"
(base) PS C:\Users\aghen\AppData\Local\Programs\Arduino IDE> & ".\Arduino IDE"
(base) PS C:\Users\aghen\AppData\Local\Programs\Arduino IDE>
Arduino IDE 2.3.6
Checking for frontend application configuration customizations. Module path: C:\Users\aghen\AppData\Local\Programs\Arduino IDE\resources\app\lib\backend\electron-main.js, destination 'package.json': C:\Users\aghen\AppData\Local\Programs\Arduino IDE\resources\app\package.json
Setting 'theia.frontend.config.appVersion' application configuration value to: "2.3.6" (type of string)
Setting 'theia.frontend.config.cliVersion' application configuration value to: "1.2.0" (type of string)
Setting 'theia.frontend.config.buildDate' application configuration value to: "2025-04-09T11:26:55.498Z" (type of string)
Frontend application configuration after modifications: {"applicationName":"Arduino IDE","defaultTheme":{"light":"arduino-theme","dark":"arduino-theme-dark"},"defaultIconTheme":"none","electron":{"windowOptions":{},"showWindowEarly":true,"splashScreenOptions":{},"uriScheme":"arduino-ide"},"defaultLocale":"","validatePreferencesSchema":false,"reloadOnReconnect":true,"uriScheme":"theia","preferences":{"window.title":"${rootName}${activeEditorShort}${appName}","files.autoSave":"afterDelay","editor.minimap.enabled":false,"editor.tabSize":2,"editor.scrollBeyondLastLine":false,"editor.quickSuggestions":{"other":false,"comments":false,"strings":false},"editor.maxTokenizationLineLength":500,"editor.bracketPairColorization.enabled":false,"breadcrumbs.enabled":false,"workbench.tree.renderIndentGuides":"none","explorer.compactFolders":false},"appVersion":"2.3.6","cliVersion":"1.2.0","buildDate":"2025-04-09T11:26:55.498Z"}
Starting backend process. PID: 20708
Showing main window early
Using browser-only version of superagent in non-browser environment
Configuration directory URI: 'file:///c%3A/Users/aghen/.arduinoIDE'
Configuring to accept webviews on '^.+\.webview\..+$' hostname.
2025-09-18T05:53:04.086Z root INFO Backend u.initialize: 23.7 ms [Finished 0.561 s after backend start]
2025-09-18T05:53:04.087Z root INFO Backend Object.initialize: 21.5 ms [Finished 0.561 s after backend start]
2025-09-18T05:53:04.087Z root INFO Backend a.initialize: 1.4 ms [Finished 0.561 s after backend start]
2025-09-18T05:53:04.087Z root INFO Backend a.initialize: 1.2 ms [Finished 0.561 s after backend start]
2025-09-18T05:53:04.087Z root INFO Backend u.initialize: 1.5 ms [Finished 0.562 s after backend start]
2025-09-18T05:53:04.089Z root INFO Backend l.initialize: 22.5 ms [Finished 0.562 s after backend start]
2025-09-18T05:53:04.095Z root INFO configured all backend app contributions
2025-09-18T05:53:04.095Z root INFO Backend l.onStart: 1.0 ms [Finished 0.571 s after backend start]
2025-09-18T05:53:04.096Z root INFO Backend d.onStart: 0.1 ms [Finished 0.572 s after backend start]
2025-09-18T05:53:04.096Z root INFO Backend a.onStart: 0.3 ms [Finished 0.572 s after backend start]
2025-09-18T05:53:04.096Z config INFO >>> Initializing CLI configuration...
2025-09-18T05:53:04.096Z root INFO Backend x.onStart: 0.3 ms [Finished 0.572 s after backend start]
2025-09-18T05:53:04.096Z config INFO Loading CLI configuration from c:\Users\aghen\.arduinoIDE\arduino-cli.yaml...
2025-09-18T05:53:04.096Z daemon INFO Starting daemon from C:\Users\aghen\AppData\Local\Programs\Arduino IDE\resources\app\lib\backend\resources\arduino-cli.exe...
2025-09-18T05:53:04.096Z root INFO Backend w.onStart: 0.3 ms [Finished 0.573 s after backend start]
2025-09-18T05:53:04.096Z discovery-log INFO start
2025-09-18T05:53:04.096Z discovery-log INFO start new deferred
2025-09-18T05:53:04.096Z root INFO Backend v.onStart: 0.2 ms [Finished 0.573 s after backend start]
2025-09-18T05:53:04.096Z root INFO Backend a.onStart: 0.1 ms [Finished 0.573 s after backend start]
2025-09-18T05:53:04.101Z root INFO Theia app listening on http://127.0.0.1:52129.
2025-09-18T05:53:04.101Z root INFO Finished starting backend application: 4.7 ms [Finished 0.578 s after backend start]
2025-09-18T05:53:04.191Z root WARN The local plugin referenced by local-dir:/c%3A/Users/aghen/.arduinoIDE/plugins does not exist.
2025-09-18T05:53:04.191Z root WARN The local plugin referenced by local-dir:/c%3A/Users/aghen/.arduinoIDE/deployedPlugins does not exist.
2025-09-18T05:53:04.191Z root WARN The local plugin referenced by local-dir:C:\Users\aghen\.arduinoIDE\plugins does not exist.
2025-09-18T05:53:04.208Z config INFO Loaded CLI configuration: {"network":{"proxy":"http://proxy.aghen.com:8080"},"board_manager":{"additional_urls":[]}}
2025-09-18T05:53:04.208Z config INFO Loading fallback CLI configuration to get 'directories.data' and 'directories.user'
2025-09-18T05:53:04.248Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="arduino-cli version 1.2.0"
2025-09-18T05:53:04.250Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="Using config file: c:\\Users\\aghen\\.arduinoIDE\\arduino-cli.yaml"
2025-09-18T05:53:04.250Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="Executing `arduino-cli daemon`"
2025-09-18T05:53:04.261Z daemon INFO Daemon is now listening on 127.0.0.1:52130
{"IP":"127.0.0.1","Port":"52130"}
2025-09-18T05:53:04.261Z daemon INFO Daemon is running.
2025-09-18T05:53:04.263Z config INFO Loaded fallback CLI configuration: {"directories":{"user":"C:\\Users\\aghen\\Documents\\Arduino","data":"C:\\Users\\aghen\\AppData\\Local\\Arduino15"}}
2025-09-18T05:53:04.263Z config INFO Merged CLI configuration with the fallback: {"directories":{"user":"C:\\Users\\aghen\\Documents\\Arduino","data":"C:\\Users\\aghen\\AppData\\Local\\Arduino15"},"network":{"proxy":"http://proxy.aghen.com:8080"},"board_manager":{"additional_urls":[]}}
2025-09-18T05:53:04.263Z config INFO Loaded the CLI configuration.
2025-09-18T05:53:04.274Z config INFO Mapped the CLI configuration: {"dataDirUri":"file:///c%3A/Users/aghen/AppData/Local/Arduino15","sketchDirUri":"file:///c%3A/Users/aghen/Documents/Arduino","additionalUrls":[],"network":{"protocol":"http","hostname":"proxy.aghen.com","password":"","username":"","port":"8080"},"locale":"en"}
2025-09-18T05:53:04.274Z config INFO Validating the CLI configuration...
2025-09-18T05:53:04.277Z config INFO The CLI config is valid.
2025-09-18T05:53:04.277Z config INFO <<< Initialized the CLI configuration.
2025-09-18T05:53:04.297Z root INFO Resolve plugins list: 199.0 ms [Finished 0.774 s after backend start]
2025-09-18T05:53:04.312Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="Checking signature" index="C:\\Users\\aghen\\AppData\\Local\\Arduino15\\package_index.json" signatureFile="C:\\Users\\aghen\\AppData\\Local\\Arduino15\\package_index.json.sig" trusted=true
2025-09-18T05:53:04.313Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="Loading hardware from: C:\\Users\\aghen\\AppData\\Local\\Arduino15\\packages"
2025-09-18T05:53:04.313Z daemon INFO time="2025-09-18T14:53:04+09:00" level=info msg="Starting download" url="https://downloads.arduino.cc/monitor/serial-monitor/serial-monitor_v0.15.0_Windows_64bit.zip"
2025-09-18T05:53:05.247Z root INFO creating connection for 1
2025-09-18T05:53:06.019Z root WARN A command editor.action.toggleStickyScroll is already registered.
Opening channel for service path '/services/electron-window'.
Opening channel for service path '/services/ide-updater'.
2025-09-18T05:53:06.106Z root INFO Deploy plugins list: 2007.5 ms [Finished 2.582 s after backend start]
2025-09-18T05:53:06.140Z root INFO Start frontend contributions: 294.7 ms [Finished 1.990 s after frontend start]
2025-09-18T05:53:06.140Z root INFO Changed application state from 'init' to 'started_contributions'.
2025-09-18T05:53:06.147Z root INFO Changed application state from 'started_contributions' to 'attached_shell'.
2025-09-18T05:53:06.147Z root INFO >>> Restoring the layout state...
2025-09-18T05:53:06.202Z root INFO [7f9cee1d-f3f3-461c-b993-ec76ae5f1229] Waiting for backend deployment: 41.2 ms [Finished 2.028 s after frontend start]
2025-09-18T05:53:06.595Z root INFO [hosted-plugin: 9572] PLUGIN_HOST(9572) starting instance
[Object: null prototype] {}
2025-09-18T05:53:07.013Z root INFO [7f9cee1d-f3f3-461c-b993-ec76ae5f1229] Sync of 23 plugins: 846.8 ms [Finished 2.874 s after frontend start]
2025-09-18T05:53:34.338Z root ERROR Detected an error response during the gRPC core client initialization: code: 13, message: downloading builtin:serial-monitor@0.15.0 tool: Get "https://downloads.arduino.cc/monitor/serial-monitor/serial-monitor_v0.15.0_Windows_64bit.zip": dial tcp 104.18.11.21:443: i/o timeout
2025-09-18T05:53:34.338Z daemon INFO time="2025-09-18T14:53:34+09:00" level=info msg="Starting download" url="https://downloads.arduino.cc/tools/ctags-5.8-arduino11-pm-i686-mingw32.zip"
2025-09-18T05:54:04.340Z root ERROR Detected an error response during the gRPC core client initialization: code: 13, message: downloading builtin:ctags@5.8-arduino11 tool: Get "https://downloads.arduino.cc/tools/ctags-5.8-arduino11-pm-i686-mingw32.zip": dial tcp 104.18.11.21:443: i/o timeout
2025-09-18T05:54:04.340Z daemon INFO time="2025-09-18T14:54:04+09:00" level=info msg="Starting download" url="https://downloads.arduino.cc/discovery/dfu-discovery/dfu-discovery_v0.1.2_Windows_64bit.zip"
2025-09-18T05:54:34.340Z root ERROR Detected an error response during the gRPC core client initialization: code: 13, message: downloading builtin:dfu-discovery@0.1.2 tool: Get "https://downloads.arduino.cc/discovery/dfu-discovery/dfu-discovery_v0.1.2_Windows_64bit.zip": dial tcp 104.18.11.21:443: i/o timeout
2025-09-18T05:54:34.341Z daemon INFO time="2025-09-18T14:54:34+09:00" level=info msg="Starting download" url="https://downloads.arduino.cc/discovery/mdns-discovery/mdns-discovery_v1.0.9_Windows_64bit.zip"
2025-09-18T05:55:04.344Z root ERROR Detected an error response during the gRPC core client initialization: code: 13, message: downloading builtin:mdns-discovery@1.0.9 tool: Get "https://downloads.arduino.cc/discovery/mdns-discovery/mdns-discovery_v1.0.9_Windows_64bit.zip": dial tcp 104.18.10.21:443: i/o timeout
2025-09-18T05:55:04.345Z daemon INFO time="2025-09-18T14:55:04+09:00" level=info msg="Starting download" url="https://downloads.arduino.cc/discovery/serial-discovery/serial-discovery_v1.4.1_Windows_64bit.zip"

I will keep an eye on the github for the implementation of the proxy auto-configuration, although the issue now is that the IDE GUI won't launch if there is no internet connection, so even the manual proxy configuration settings can't be reached.

OK, that makes the problem clear:

Explanation

Unfortunately a bug was introduced in Arduino IDE 2.3.3 that causes the proxy configuration to be ignored for these specific downloads.

The bug is actually in the Arduino CLI helper tool that provides much of the non-GUI functionality for Arduino IDE under the hood. The bug has already been fixed in Arduino CLI, but Arduino IDE is still using the version of Arduino CLI that has the bug. So the bug will be fixed in Arduino IDE as soon as the developers update the version of Arduino CLI it uses.

Workaround

There are a couple of possible workarounds. I'll describe both of them and you can choose whichever one seems most convenient to you:

Use Older Version of Arduino IDE

One workaround would be to use the last version of Arduino IDE from before the regression: 2.3.2. This is the most simple approach, but is not ideal because some significant enhancements and fixes have been made since 2.3.2.

I'll provide instructions you can follow to install Arduino IDE 2.3.2:

  1. Click the following link to open the page for the 2.3.2 release in the Arduino IDE GitHub repository:
    Release 2.3.2 Β· arduino/arduino-ide Β· GitHub

  2. From the list of download links under the "Assets" section of the page, click the link with the name:

    • If you want the installer package: arduino-ide_2.3.2_Windows_64bit.exe
    • If you want the "MSI" package: arduino-ide_2.3.2_Windows_64bit.msi
    • If you want the "ZIP" package: arduino-ide_2.3.2_Windows_64bit.zip

    β“˜ If you aren't sure which one you need, use arduino-ide_2.1.1_Windows_64bit.exe

  3. Wait for the download to finish.

  4. Install Arduino IDE from the downloaded file as you would normally do.

You will now find that Arduino IDE shows an "Update Available" dialog on startup, to offer you an update to the newer version of Arduino IDE. If you click the "SKIP VERSION" button in the "Update Available" dialog, it will cause Arduino IDE to no longer offer the update to 2.3.6, but it will appear once again after the next release (e.g., 2.3.7) comes out, which will hopefully have the bug fix.

Use Arduino CLI to Install Platforms

You can work around the bug by using the latest version of Arduino CLI (which has the bug fix) directly to install these files and any other boards platforms you need.

I'll provide instructions you can follow to do that:

  1. Install Arduino CLI:
    https://arduino.github.io/arduino-cli/latest/installation/
  2. Start Windows "File Explorer".
  3. Navigate to the Arduino CLI installation folder.
  4. In the folder listing of the Arduino CLI installation folder, hold the Shift key while clicking the right hand button on the mouse.
    A context menu will open
  5. Select "Open PowerShell window here" from the menu.
    Windows PowerShell will now open with the current directory set to the Arduino CLI installation folder.
  6. If you need to install any 3rd party boards platforms that require an "Additional Boards Manager URL" to be provided (example), run a command with the following format to configure the URL:
    .\arduino-cli --config-file "$Env:HOMEDRIVE$Env:HOMEPATH\.arduinoIDE\arduino-cli.yaml" config set board_manager.additional_urls <URL>
    
    (where <URL> is the URL for the platform)
  7. Run the command (reference) with the following form:
    .\arduino-cli  --config-file "$Env:HOMEDRIVE$Env:HOMEPATH\.arduinoIDE\arduino-cli.yaml" core list --all
    
  8. Find the Arduino boards platforms (AKA "cores") you would like to install in the list. Take note of the machine identifier that is shown in the "ID" column.
    β“˜ Alternatively, you can use the arduino-cli core search command to get the information about a specific platform.
  9. Run a command (reference) with the following format to install the platforms:
    .\arduino-cli  --config-file "$Env:HOMEDRIVE$Env:HOMEPATH\.arduinoIDE\arduino-cli.yaml" core install <ID>
    
    (where <ID> is the machine identifier you saw in the arduino-cli core list command output)

After doing that, you should be able to start and use Arduino IDE. You should use Arduino CLI again whenever you need to install or update a platform.

Other Proxy Handling Bugs

IDE Updates

Note that there is a separate bug that causes Arduino IDE to not use the proxy for updates:

This is in the Arduino IDE codebase, not in Arduino CLI, so will not be resolved by the platform installation fix that was made Arduino CLI.

So you will need to manually download new versions of Arduino IDE from the "Software" page instead of accepting the update offer from the notification that Arduino IDE displays when an new version of Arduino IDE is available. That notification does still serve a useful purpose in that it brings your attention to the availability of a new version.

Port Configuration Update

There is a bug that causes an update to the proxy's port number via the Preferences dialog to be ignored by Arduino IDE if you use:

If you find the need to change the port number, the workaround will be to make the change by editing the configuration in arduino-cli.yaml.

Firmware Updater Does Not Use Proxy

Arduino IDE has a "Firmware Updater" feature:

https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-fw-cert-uploader#firmware-updater

This feature relies on being able to download the firmware file from the Internet. Unfortunately proxy support has not been implemented in the Arduino Firmware Uploader helper tool that performs that download. The firmware updater feature is only relevant to a few official Arduino boards (e.g., Arduino UNO R4 WiFi) that have a supplemental module running a custom firmware maintained by Arduino. So, depending on which boards you work with, you might not be affected by this bug. If you find you are affected, please make a post here on Arduino Forum and we'll help you find an alternative method to update the firmware.

The Arduino IDE developers are tracking this bug here:

As you are aware, the workaround for that specific bug is to configure the proxy via the network.proxy key in the arduino-cli.yaml file.

Of course the bug I mentioned above renders even that workaround futile, but that issue is separate from the bug that causes Arduino IDE to fail to start up under these conditions.

Version 2.3.2 worked, thank you very much.

One note for people who may find this: you must manually delete the app configuration folder C:\Users\<username>\.arduinoIDE left from version 2.3.6 before installing version 2.3.2

You are welcome. I'm glad it is working now.

Regards, Per