Skip to content
Tech News
← Back to articles

What I learned by putting GitHub Copilot behind a MitM proxy

read original more articles
Why This Matters

This article highlights the importance of understanding the underlying architecture of popular AI-powered desktop apps, especially those built with Electron, to better grasp their security and operational dynamics. By experimenting with tools like GitHub Copilot behind a MitM proxy, developers and consumers can uncover potential vulnerabilities and optimize their use of these AI tools. Such insights are crucial as AI integration becomes more pervasive in everyday software, emphasizing the need for transparency and security in the tech industry.

Key Takeaways

Hello, Rafael here - every week I cover interesting challenges and developments that I’ve come across recently through the lens of an engineer building AI systems.

Subscribe to get weekly issues 👇

There has been a flurry of AI-powered apps and AI features in the last couple of years. Incumbent players like Slack have swiftly added AI features to its roster. For AI-native ones like Cursor, Notion, ChatGPT Desktop and Claude Desktop, AI was always part of the raison d’être.

The more AI features these apps released, the more I became inclined to look at their inner workings. Hopefully I would be able to uncover a bit of what’s running under the hood; at the very least, I would learn one thing or two about desktop app development.

Coincidentally, I noticed I started exhausting my Copilot credits earlier and earlier each month. This ended up pulling me towards selecting a main candidate for my experiments. I decided to dive deep into VS Code and Copilot.

One common denominator: Electron

Common amongst all of the apps above is the fact that they are built using Electron. Electron is a JavaScript framework which helps developers build and distribute desktop applications. In layman’s terms, it works by bundling a Node.js runtime along with HTML, CSS and JavaScript artifacts, which are then rendered via Chromium.

List of apps using Electron. I know, it’s a lot. Source

This removes the need of having multiple codebases in native languages for different platforms (for instance, C# for Windows and Swift for macOS), making it easier for developers to build desktop applications that run across multiple platforms from a single codebase. (Native modules and certain packaging steps still often require per-platform handling, but the bulk of the application logic is shared.)

Because they share Electron, they share a rough architecture, which means whatever I learned probing one should transfer to the others.

... continue reading