Embed native RDP / external application windows inside VS Code editor tabs

Open
#322,901 0 comments 1 reaction 1 assignee View on GitHub

@zhichli is already working on this.

Since Jun 25, 2026.

Assessment

This issue has not been assessed yet.

Description

stale triage-needed

Type: Feature Request

Feature Request: Allow extensions to embed native remote desktop sessions inside an editor tab

Summary

I would like VS Code to support embedding a native Remote Desktop / RDP session directly inside an editor tab, in the same area where files such as runTest.js are displayed.

Currently, VS Code extensions can open Webviews, terminals, custom editors, and external applications, but there does not seem to be an official API that allows an extension to host a native OS window, such as mstsc.exe, inside a VS Code editor tab.

Use case

I am building a VS Code extension for remote development and automation. The goal is to let users manage SSH, macros, terminal automation, and remote desktop connections from a single VS Code workspace.

A useful workflow would be:

  1. Open VS Code.
  2. Select a saved remote machine.
  3. Open an RDP session.
  4. Display the remote desktop directly inside a VS Code editor tab, next to source files, terminals, and extension views.

This would make VS Code a unified remote operations workspace rather than forcing users to switch between VS Code and a separate Remote Desktop window.

Current limitations

At the moment, the available options are:

  • Launch mstsc.exe or another RDP client externally.
  • Use a Webview with an HTML5 remote desktop gateway such as Apache Guacamole.
  • Open a browser-based remote desktop interface inside VS Code’s Simple Browser or a custom Webview.

These workarounds are useful, but they are not equivalent to embedding a native RDP client directly in VS Code.

Launching an external RDP client breaks the integrated workflow, while using a web gateway requires extra infrastructure and is more complex for users to install.

Requested capability

It would be helpful if VS Code provided an official API that allows extensions to embed or host native external application windows inside an editor tab or custom editor.

For example, an extension could start a process such as:

mstsc.exe

and attach its window to a VS Code editor area.

A possible API could look conceptually like:

vscode.window.createNativeWindowPanel({
  title: 'Remote Desktop',
  executable: 'mstsc.exe',
  args: ['connection.rdp'],
  viewColumn: vscode.ViewColumn.One
});

This does not need to be specific to RDP. The general capability would be useful for tools that need to display native UI inside VS Code while remaining part of the workspace.

Security considerations

I understand that embedding native windows inside VS Code may have security, portability, and sandboxing implications.

A safe version of this feature could include:

  • Explicit user confirmation before launching or embedding a native application.
  • Workspace Trust restrictions.
  • Extension permission declarations.
  • Platform-specific support only where feasible.
  • Clear separation between Webviews and native embedded windows.
  • No automatic access to credentials or system resources beyond the launched process.
Why this would be valuable

This would enable extensions to provide a much more integrated experience for:

  • Remote desktop / RDP tools.
  • VM consoles.
  • Embedded device consoles.
  • Legacy enterprise tools.
  • Remote administration workflows.
  • Development environments that require both code and graphical remote access.

For users, the benefit would be a single VS Code workspace containing code, terminals, logs, automation tools, and remote desktop sessions.

Alternative

If embedding arbitrary native windows is not feasible, another useful option would be an official remote desktop view API or a recommended extension API pattern for building integrated RDP/VNC/remote display clients inside VS Code.

Thank you for considering this feature request.

VS Code version: Code - Insiders 1.127.0-insider (2858f2c0200dc2f4f87aca248c69daaf85f3ce69, 2026-06-23T09:46:13-07:00)
OS version: Windows_NT x64 10.0.26200
Modes:

System Info
Item Value
CPUs Intel(R) Core(TM) Ultra 7 165U (14 x 2688)
GPU Status 2d_canvas: enabled
GPU0: VENDOR= 0x8086, DEVICE=0x7d45 [Intel(R) Graphics], DRIVER_VENDOR=Intel, DRIVER_VERSION=32.0.101.8724 ACTIVE
GPU1: VENDOR= 0x1414, DEVICE=0x008c [Microsoft Basic Render Driver], DRIVER_VERSION=10.0.26100.7309
Machine model name:
Machine model version:
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgpu: enabled
webnn: disabled_off
Load (avg) undefined
Memory (System) 15.46GB (2.04GB free)
Process Argv --crash-reporter-id 4a8cb585-4f3c-4fa8-99da-226ec4527ec7
Screen Reader no
VM 0%
Extensions (12)
Name Identifier Author Version
Kotlin fwcd.kotlin fwcd 0.2.36
GraphQL: Syntax Highlighting graphql.vscode-graphql-syntax GraphQL 1.3.10
Kotlin Language mathiasfrohlich.kotlin mathiasfrohlich 1.7.1
Remote Manager mavenshu.remote-manager mavenshu 1.0.37
PowerShell ms-vscode.powershell ms-vscode 2026.1.1
Language Support for Java(TM) by Red Hat redhat.java redhat 1.54.0
Gradle for Java vscjava.vscode-gradle vscjava 3.17.3
Debugger for Java vscjava.vscode-java-debug vscjava 0.59.0
Project Manager for Java vscjava.vscode-java-dependency vscjava 0.27.5
Extension Pack for Java vscjava.vscode-java-pack vscjava 0.31.1
Test Runner for Java vscjava.vscode-java-test vscjava 0.45.0
Maven for Java vscjava.vscode-maven vscjava 0.45.3
A/B Experiments
vsliv368:30146709
pythonvspyt551:31249597
nativeloc1:31118317
dwcopilot:31158714
dwoutputs:31242946
copilot_t_ci:31333650
g012b348:31231168
pythonrdcb7:31268811
pythonpcpt1cf:31399617
6518g693:31302842
6abeh943:31336334
envsactivate1:31349248
editstats-enabled:31346256
cloudbuttont:31366566
3efgi100_wstrepl:31403338
cp_cls_t_966_ss:31526232
4je02754:31455664
8hhj4413:31478653
ge8j1254_inline_auto_hint_haiku:31490507
cp_cls_c_1081:31454833
conptydll_true:31485575
ia-use-proxy-models-svc:31446143
e9c30283:31453065
test_treatment2:31471001
c9b86496:31447327
idci7584:31454084
e3e4d672:31454087
ei9d7968:31462942
nes-extended-on:31455475
de16b994:31458079
89g7j272:31506658
hhf17803:31462392
7e187181:31482583
i2gc6536:31472020
52612955:31508042
h08i8180:31475367
ddid_t:31478204
hmra_i5g22:31518061
bjc72774_agent_sandbox:31538428
7df3h592:31491241
cp_cls_t_1082:31535311
logging_enabled_new:31490725
jb_cp_cls_t_632:31537244
b1g4i769:31503653
ha629193:31508444
cdk-lw-on:31524445
f9bf7985:31531254
31fi7170_t:31517328
a1ije391_t:31533808
api_cot_ctrl:31509853
g4a0e106:31510899
41836166:31537719
prpt_srch:31513639
jbcp_cls_pctr_t:31531130
cp_intellij_t_nes:31533504
jf4hg949:31526829
control_a71ac258:31538452
h561g132:31534507
ihg5j128:31534457

Dominant language
TypeScript
Stars
193k
Forks
42.9k
PR merge metrics
PR metrics pending

Contributor guide

Open the contributing guide

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.

More from microsoft/vscode

All issues in microsoft/vscode

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.