Espressif has released version 2.3.0 of its ESP-IDF Extension for Visual Studio Code. The v2.3.0 release on GitHub was published on 23 September 2026, and Espressif's Brian Ignacio walked through the main changes in an Espressif Developer Portal post dated 16 October 2026. The release routes extension tasks through VS Code's node-pty, adds an "Ask AI to fix" action when a task fails, introduces commands that build or flash only one part of a firmware image, and registers two remote Espressif MCP servers inside the editor. It also makes the debug adapter load the project's gdbinit files, which addresses call stacks that showed "?? Unknown Source".

The previous release, v2.2.0, was published on 14 August 2026, so v2.3.0 arrived 40 days later. The extension's chat support is not new: since v1.11.0 it has let users run ESP-IDF commands from VS Code's Chat view, for example by typing "build the project" or "#espIdfCommands build". Version 2.3.0 builds on that by feeding failed task output back into Chat.

AI help when a build fails

As part of a major refactoring (PR 1868), task execution now uses VS Code's node-pty, which lets the extension capture task output. Espressif calls the resulting feature AI Chat task output integration. When a command such as "ESP-IDF: Build your project" fails, a notification offers "Ask AI to fix". Selecting it opens a new Chat view with the task output already included in a prompt. Espressif's example is a project that calls a function that doesn't exist in main(), opened in Visual Studio Code or Cursor. The log goes to whatever the editor's Chat is connected to; in VS Code that can be Copilot, another AI provider or the user's own models.

Building and flashing one partition at a time

The existing idf.partitionToUse setting selects app, bootloader or partition-table, and the "ESP-IDF: Build, Flash and Start a Monitor on Your Device" command flashes only the selected partition. Version 2.3.0 adds "ESP-IDF: Build App, Flash App and Start Monitor", which does the same for the App partition without that setting in settings.json (PR 1926). Six further commands build or flash a single partition:

  • ESP-IDF: Build App Only
  • ESP-IDF: Build Bootloader Only
  • ESP-IDF: Build Partition Table
  • ESP-IDF: Flash App Only (UART)
  • ESP-IDF: Flash Bootloader Only (UART)
  • ESP-IDF: Flash Partition Table (UART)

All three flash-only commands are labelled UART.

Espressif MCP servers inside the editor

The extension now registers two remote HTTP Model Context Protocol (MCP) servers, so the VS Code Chat view can call Espressif tools without a separate mcp.json entry (PR 1932). The two servers are:

  • Espressif Documentation, semantic search over official Espressif documentation in English and Chinese through the search_espressif_sources tool.
  • ESP Component Registry, which searches components and fetches component documentation.

The servers do not need a local ESP-IDF project. They are registered when the extension loads unless idf.extensionActivationMode is set to never. To enable them, run "MCP: List Servers" from the Command Palette and start both entries. VS Code then opens a browser for sign-in with a GitHub or WeChat account. Espressif says only an anonymized account ID is used, to enforce rate limits. The Component Registry server may also ask for authentication.

Debugging fix: no more "?? Unknown Source"

Developers could see "?? Unknown Source" in the call stack during a debug session, or an error saying the bounds of the current function could not be found. The workaround was to add ROM symbols by hand, either in launch.json or with an add-symbol-file command in the debug console. The debug adapter now loads the project's gdbinit files from its build directory when a debug session starts (PR 1914). Those files carry the GDB configuration and symbol information needed to resolve source locations.

Other changes in the release notes

The GitHub changelog also lists work that users may not notice directly:

  • The refactoring in PR 1868 also reorganizes code, adds unit tests and improves error handling.
  • Hardware end-to-end tests in CI (PR 1894).
  • LP Core targets in the OpenOCD boards fallback (PR 1880).
  • Improved telemetry fields, with unnecessary telemetry events removed.
  • Comments persisted in JSON files (PR 1928), contributed by @GillesZunino.

Bug fixes cover symlink extraction for EIM version assets on Linux, App Tracing parsing on Windows, updated Docker install instructions, and configurations in multi-folder VS Code workspaces. A generated c_cpp_properties.json also no longer overrides the compiler from compile_commands.json, which fixes built-in header resolution.

What It Means for Makers

The update is for anyone developing for Espressif chips with ESP-IDF in VS Code. The Visual Studio Marketplace listing carries version 2.3.0. Espressif says building or flashing only the partition affected by your changes can reduce task time, so the app-only command suits work where only application code changes between runs.

"Ask AI to fix" appears only after a task fails and relies on whatever AI provider your editor's Chat is connected to. The documentation and Component Registry MCP servers need a GitHub or WeChat sign-in before use, and setting idf.extensionActivationMode to never keeps them from being registered. If your debug sessions have shown "?? Unknown Source" frames, the gdbinit loading removes the need to add ROM symbols by hand. The Developer Portal post covers each feature in more detail, and the GitHub release page has the full changelog with PR links.

Sources