<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mahesh Bodicherla</title>
    <description>The latest articles on DEV Community by Mahesh Bodicherla (@mahesh_inc).</description>
    <link>https://dev.to/mahesh_inc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4198671%2Fa1d3a6c1-02c1-4270-8435-3f3261be5deb.png</url>
      <title>DEV Community: Mahesh Bodicherla</title>
      <link>https://dev.to/mahesh_inc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mahesh_inc"/>
    <language>en</language>
    <item>
      <title>Is Cursor Safe? I Checked the Security Settings of Cursor, Postman and Claude (Electron Fuses)</title>
      <dc:creator>Mahesh Bodicherla</dc:creator>
      <pubDate>Wed, 21 Oct 2026 15:30:56 +0000</pubDate>
      <link>https://dev.to/mahesh_inc/i-audited-the-electron-apps-on-my-mac-claude-66-cursor-06-postman-16-33np</link>
      <guid>https://dev.to/mahesh_inc/i-audited-the-electron-apps-on-my-mac-claude-66-cursor-06-postman-16-33np</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated October 21, 2026: re-tested on the latest releases, Cursor 3.26.13 and Postman 12.33.2 (first tested on Cursor 3.1.15 and Postman 11.93.0). The results did not change.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cursor, Postman and the Claude desktop app are all built on the same framework, Electron (like VS Code, Slack and Discord), but they lock it down very differently. On my Mac, Claude 3.1623.0 turned on all six hardening switches I checked, Postman 12.33.2 turned on one, and Cursor 3.26.13 turned on none.&lt;/p&gt;

&lt;p&gt;Those switches decide whether another program on your machine can quietly run code with the app's identity, permissions and signed-in sessions. Checking them took one read-only command per app and no special access.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Electron fuses?
&lt;/h2&gt;

&lt;p&gt;Fuses are on/off switches written into an Electron app's framework binary when the app is packaged. Unlike settings in the app's code, they can't be changed at runtime, so they are a cheap, reliable way to remove risky features before shipping.&lt;/p&gt;

&lt;p&gt;The six I checked, and the safe setting for each:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fuse&lt;/th&gt;
&lt;th&gt;Safe setting&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RunAsNode&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;When on, setting &lt;code&gt;ELECTRON_RUN_AS_NODE&lt;/code&gt; makes the app's binary act as a plain Node.js runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EnableNodeOptionsEnvironmentVariable&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;When on, the &lt;code&gt;NODE_OPTIONS&lt;/code&gt; variable can inject code or flags at startup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EnableNodeCliInspectArguments&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;When on, &lt;code&gt;--inspect&lt;/code&gt; flags can attach a debugger to the app's main process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EnableCookieEncryption&lt;/td&gt;
&lt;td&gt;On&lt;/td&gt;
&lt;td&gt;Encrypts the app's stored cookies with a key from the OS keychain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EnableEmbeddedAsarIntegrityValidation&lt;/td&gt;
&lt;td&gt;On&lt;/td&gt;
&lt;td&gt;Checks the app's packaged code against a hash before loading it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OnlyLoadAppFromAsar&lt;/td&gt;
&lt;td&gt;On&lt;/td&gt;
&lt;td&gt;Refuses to load app code from anywhere except the verified archive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Electron's own security guidance recommends this hardened configuration; it is not the framework's default, so each vendor has to opt in.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I checked
&lt;/h2&gt;

&lt;p&gt;I used &lt;a href="https://github.com/morluto/rea" rel="noopener noreferrer"&gt;REA (Reverse Engineer Anything)&lt;/a&gt;, an open-source MCP server, driven from Claude Code. Its &lt;code&gt;inspect_electron_fuses&lt;/code&gt; tool finds the fuse block inside each app's &lt;code&gt;Electron Framework&lt;/code&gt; binary and reports every fuse's raw byte.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read-only:&lt;/strong&gt; it reads the shipped files; it doesn't launch, modify or bypass anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every architecture:&lt;/strong&gt; Claude and Cursor ship universal binaries; the x86_64 and arm64 slices matched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducible:&lt;/strong&gt; each result carries the binary's SHA-256 and the fuse block's file offset, so anyone with the same version can verify it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Versions tested on macOS 15.1 on October 21, 2026: Claude 3.1623.0, Cursor 3.26.13, Postman 12.33.2 (arm64 build).&lt;/p&gt;

&lt;h2&gt;
  
  
  Results: Cursor vs Postman vs Claude security scorecard
&lt;/h2&gt;

&lt;p&gt;Claude passed every check, Postman passed one, and Cursor passed none.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fuse (safe setting)&lt;/th&gt;
&lt;th&gt;Claude 3.1623.0&lt;/th&gt;
&lt;th&gt;Cursor 3.26.13&lt;/th&gt;
&lt;th&gt;Postman 12.33.2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RunAsNode (off)&lt;/td&gt;
&lt;td&gt;Off ✓&lt;/td&gt;
&lt;td&gt;On ✗&lt;/td&gt;
&lt;td&gt;On ✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NODE_OPTIONS allowed (off)&lt;/td&gt;
&lt;td&gt;Off ✓&lt;/td&gt;
&lt;td&gt;On ✗&lt;/td&gt;
&lt;td&gt;On ✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--inspect&lt;/code&gt; flags allowed (off)&lt;/td&gt;
&lt;td&gt;Off ✓&lt;/td&gt;
&lt;td&gt;On ✗&lt;/td&gt;
&lt;td&gt;Off ✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cookie encryption (on)&lt;/td&gt;
&lt;td&gt;On ✓&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASAR integrity check (on)&lt;/td&gt;
&lt;td&gt;On ✓&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only load from ASAR (on)&lt;/td&gt;
&lt;td&gt;On ✓&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;td&gt;Off ✗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1/6&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude&lt;/strong&gt; ships the full hardened set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; leaves every switch at its permissive setting, including debugger attachment through &lt;code&gt;--inspect&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postman&lt;/strong&gt; blocks &lt;code&gt;--inspect&lt;/code&gt; but leaves the other five open.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three leave &lt;code&gt;GrantFileProtocolExtraPrivileges&lt;/code&gt; on; I left it out of the score because disabling it can break apps that load local files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it yourself
&lt;/h2&gt;

&lt;p&gt;You don't have to trust REA or me. Electron's own fuse tool reads the same bytes, and it gives identical results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @electron/fuses &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;--app&lt;/span&gt; /Applications/Cursor.app
npx @electron/fuses &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;--app&lt;/span&gt; /Applications/Postman.app
npx @electron/fuses &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;--app&lt;/span&gt; /Applications/Claude.app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Cursor 3.26.13, for example, it prints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RunAsNode is Enabled
EnableCookieEncryption is Disabled
EnableNodeOptionsEnvironmentVariable is Enabled
EnableNodeCliInspectArguments is Enabled
EnableEmbeddedAsarIntegrityValidation is Disabled
OnlyLoadAppFromAsar is Disabled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude 3.1623.0 shows the opposite on all six, and Postman 12.33.2 differs from Cursor only on &lt;code&gt;EnableNodeCliInspectArguments&lt;/code&gt; (Disabled). The command only reads the app's files; it doesn't run or change anything. If you have different versions, your results may differ, which is the point of checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Cursor safe to use? What the results actually mean
&lt;/h2&gt;

&lt;p&gt;Yes, for most people Cursor is safe to use. These gaps don't let anyone break into your Mac; an attacker already needs code running as your user. What they change is what that code can do next.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Borrowed identity:&lt;/strong&gt; code started through a permissive app runs as that signed app, so it can inherit macOS permissions you granted the app (files, camera, microphone) instead of triggering a fresh prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quiet persistence:&lt;/strong&gt; with integrity checks off, modified app code can load without warning the next time you open the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session exposure:&lt;/strong&gt; with cookie encryption off, the app's stored web sessions are easier to read off disk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Cursor result has context. It's built on VS Code, whose extension host has historically depended on running Electron as Node, so turning RunAsNode off isn't a one-line change. That explains it; it doesn't make the other five settings necessary.&lt;/p&gt;

&lt;p&gt;Vendors usually rate this class as low severity, and I agree it's hardening rather than an emergency. It still matters for an AI code editor and an API client: both hold source code, API keys and tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which threat do fuses protect against?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Added after a good question in the comments from &lt;a href="https://dev.to/alexcodebytes"&gt;@alexcodebytes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The attacker that matters here is malware already running on your Mac as you, but without the macOS permissions you've granted to specific apps (Full Disk Access, camera, microphone, folders). It has two ways to get those permissions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attacker's move&lt;/th&gt;
&lt;th&gt;What stops it on modern macOS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Modify or replace the app's files&lt;/td&gt;
&lt;td&gt;App Management (macOS 13 Ventura and later) blocks other programs from changing signed apps in /Applications without your approval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Borrow the unmodified app, for example by launching it with &lt;code&gt;ELECTRON_RUN_AS_NODE=1&lt;/code&gt; or &lt;code&gt;NODE_OPTIONS&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Only the RunAsNode and NODE_OPTIONS fuses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Borrowing is the quieter attack. The app stays signed and unmodified, so macOS sees the real app running and applies its permissions, with no prompt. That's why those two fuses matter even on a well-protected Mac.&lt;/p&gt;

&lt;p&gt;The ASAR integrity fuses cover the first row where App Management doesn't apply: older macOS versions, and Windows and Linux, where nothing else stops a user's own processes from editing the app's code. The fuses do little against malware that already has admin rights, or against an attacker who can change the app before it's signed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check the security of any Electron app
&lt;/h2&gt;

&lt;p&gt;You can run the same check in a minute, with or without an AI agent.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find Electron apps:&lt;/strong&gt; any app with &lt;code&gt;Contents/Frameworks/Electron Framework.framework&lt;/code&gt; inside its bundle is Electron.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the fuses:&lt;/strong&gt; &lt;code&gt;npx @electron/fuses read --app /Applications/&amp;lt;App&amp;gt;.app&lt;/code&gt;, or ask an agent with REA installed to run &lt;code&gt;inspect_electron_fuses&lt;/code&gt; on the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare&lt;/strong&gt; against the safe settings in the table above.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you ship an Electron app, flip the fuses at package time with &lt;code&gt;@electron/fuses&lt;/code&gt; (Electron Forge and electron-builder both support it). Turn on ASAR integrity and OnlyLoadAppFromAsar together, and test your auto-updater and any native modules after each change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Electron security checklist for developers
&lt;/h2&gt;

&lt;p&gt;If you ship an Electron app, these are the fuse settings to aim for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] RunAsNode off (unless you truly need it, as VS Code-based editors do)&lt;/li&gt;
&lt;li&gt;[ ] NODE_OPTIONS and &lt;code&gt;--inspect&lt;/code&gt; arguments off&lt;/li&gt;
&lt;li&gt;[ ] Cookie encryption on&lt;/li&gt;
&lt;li&gt;[ ] Embedded ASAR integrity validation on&lt;/li&gt;
&lt;li&gt;[ ] OnlyLoadAppFromAsar on&lt;/li&gt;
&lt;li&gt;[ ] Re-check the fuses in CI on every release build&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Cursor safe?&lt;/strong&gt;&lt;br&gt;
For everyday use, yes. The missing hardening only matters if malware is already running on your computer; it then makes it easier for that malware to act as Cursor and use Cursor's permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Postman safe?&lt;/strong&gt;&lt;br&gt;
Same answer as Cursor: these are hardening gaps, not a remote vulnerability. Postman blocks debugger flags but leaves the other five fuses at their permissive defaults.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the Claude desktop app more secure than Cursor?&lt;/strong&gt;&lt;br&gt;
On these six Electron fuses, yes: Claude enables every recommended setting and Cursor enables none. Fuses are one layer of security, not a full audit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know if an app uses Electron?&lt;/strong&gt;&lt;br&gt;
On macOS, right-click the app, choose Show Package Contents, and look for &lt;code&gt;Contents/Frameworks/Electron Framework.framework&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is RunAsNode in Electron?&lt;/strong&gt;&lt;br&gt;
A fuse that, when on, lets the &lt;code&gt;ELECTRON_RUN_AS_NODE&lt;/code&gt; environment variable turn the app into a plain Node.js runtime that runs any script under the app's identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This is the first in a series of teardowns of everyday desktop apps. Next, I'll follow how one of these apps moves data between its web page and the operating system, through the preload script and IPC.&lt;/p&gt;

&lt;p&gt;If you build an Electron app and want the same check run on it, with a short report, get in touch. Subscribe to get the next teardown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/morluto/rea" rel="noopener noreferrer"&gt;REA (Reverse Engineer Anything) on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.electronjs.org/docs/latest/tutorial/fuses" rel="noopener noreferrer"&gt;Electron fuses documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@electron/fuses" rel="noopener noreferrer"&gt;@electron/fuses on npm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
