BLOG

Postman Accused of Silently Auto-Installing AI Plugins

Yongliang Talks AI
AI
广告 · Advertisement

What Happened

The author’s local investigation was completed on October 24th and 25th. All evidence comes from local files and open-source installer source code, with each path verifiable independently. The mechanism is disassembled step by step:

  1. Postman’s logs record automatic installation. In ~/Library/Application Support/Postman/logs/main.log, there is a record labeled “auto-existing-upgrade” on October 24th, 2026 at 09:34Z. The scriptResults field contains claude-code:installed and codex:installed, and the installer field is script.

  2. Codex’s global configuration was altered. ~/.codex/config.toml shows marketplace postman (with the git source pointing to postmanlabs/postman-plugin.git), with the plugin entry set to enabled=true.

  3. The hook command scope is too broad. hooks/codex-hooks.json registers a SessionStart hook (where matcher overrides startup, clear, compact). It prints session-start-context.md to the model, which states: Before responding to any non-trivial API task (design, implementation, mock, testing, monitoring, documentation, deployment of APIs or Postman Flow), load the postman:api-engineer skill and follow it. This scope is much broader than “users explicitly specifying to use Postman.”

  4. The installer source code attempts to trust its own hooks. trusted_hash and trusted_content_hash (sha256 hashes) are written in hooks.state. After installation, the installer source code installer/src/hosts/codex.ts calls approvePostmanHook(). codex-hooks.ts uses hooks/list to retrieve the hashes and writes them into the trust record via config/batchWrite. The source code’s comment reads “Approves only Postman’s current hook after installation.” The author’s restraint here: the source code proves “attempting,” but who created the trust record is not proven by the files.

  5. The remote MCP was enabled but authentication failed. mcp.codex.json points to https://mcp.postman.com/mcp. Codex logs show that MCP server startup failed and authentication was required. The remote service was not connected, yet the configuration was already written: The enabling action occurred before the user was aware of it.

VI. Claude Code also got affected, with an additional CLI installed. ~/.claude/settings.json enables postman@claude-plugins-official, and installed_plugins.json records version 2.0.1, installation time 2026-10-24T09:34:02.610Z; ~/.local/bin contains the PostMan executable file, with mtime within the installation window.

Version specifics: PostMan desktop 12.33.4, Codex plugin 1.1.0, Claude plugin 2.0.1. The source code is pinned at specific revision 6c8e452 and can be verified.

The author didn’t just complain; he made six clear demands: to handle serious product consent and security boundary issues as errors, not as documentation problems; to stop automatically installing agent plugins and CLI for existing desktop users before explicit opt-in; to remove the auto-existing-upgrade hook self-approval logic, as hook trust must be decided by users themselves within the agent host; to disclose the versions, feature flags, and consent processes behind auto-existing-upgrade, and clarify which agents and files can still be modified; to provide a complete rollback path covering agent configuration, hook trust, marketplace, cache, MCP connection, and CLI, respecting deletion and no reinstallation; to narrow the startup command to a user explicitly specifying the PostMan request. As of publication, none of these six demands have been responded to.

Silent installation is product decision, not bug

The main criticism points to a complete chain of cause: there’s a dedicated function like approvePostmanHook() in the source code, a specific category like auto-existing-upgrade in the logs, and hooks.state’s double hashing actually indicates success. Three pieces of evidence converge, pointing to the same possibility: this isn’t an uncontrolled dependency package, but a well-designed pipeline in the release process, targeting existing users who are already using the PostMan desktop. Only the official team knows the release/feature flag and consent processes behind this pipeline. The fourth demand in the author’s six demands is for its disclosure, as well as which agents and files this mechanism can still modify. From submission on October 25 to verification on November 4, the issue has remained open, with 200 reactions accumulated, yet no official label has been created. For a repository maintained by an official organization’s account, ten days of silence is a statement in itself.

The author’s six demands deserve a complete list: First, handle serious product consent and security boundary issues as actual incidents, not as documentation problems. Second, stop automatically installing agent plugins and CLI for existing desktop users before explicit opt-in. Third, remove the self-booting mechanism on the installer side; user consent must be determined by the user themselves in the agent host. Fourth, disclose the release/feature flag and consent process behind auto-existing-upgrade, as well as its impact scope. Fifth, provide a complete rollback path (agent configuration, hook trust, marketplace, cache, MCP connection, CLI coverage), with no reinstallation after deletion. Sixth, narrow the startup instructions to explicit Postman requests.

There is also a structural issue: The self-booting trust works because the trust layer of the agent host is too thin. On one side, there are desktop software programs that can configure the user’s home directory as desired; on the other side, the host’s trust records can be forged offline. When these two meet, users only get a “installed” result. The consent layer of the agent ecosystem is flimsy; Postman is just the first to be exposed. Details of the host-side vulnerabilities can be found in the comments section below.

Official Position Does Not Match

First, look at the gap between the marketing page and desktop behavior. The plugin section on the Postman official download page claims, “Manually add plugins to your coding proxy,” with two command examples (claude plugin marketplace add and install). Some users compared web archives and identified that Postman changed the wording on the download page; what can be confirmed is that both the archived page on 2026-10-26 and the current page on 11-04 only have marketing statements about manual installation, with no disclosure of automatic installation. The official position does not match the actual desktop behavior, which is verifiable.

Next, look at the structural data of the issue: All 26 comments had author_association set to NONE, with zero MEMBER, zero OWNER, and zero COLLABORATOR expressing opinions; no label, no assignee, no milestone. As of publication, Postman has not responded positively to this issue. Some users reported that someone went to Discord to confront them directly, and they felt “they didn’t take it seriously” (reporter’s statement, cannot confirm independently). The author also waited for a response: He posted on three subreddits r/postman_api, r/codex, and r/ClaudeAI, but nothing happened until his post was shared on HN on November 3rd.

When it comes to spreading misinformation, separate the two: The HN submission title read “Postman attempts to share all API data,” but the issue author clearly defined in the body of the post: This report establishes unwanted integrations and command changes, without advocating for data leakage. The title was the submitter’s wording, much more harsh than the author’s original statement. Those who shared the information should distinguish between the two.

What Are the Comments Saying?

Nearly 300 comments on HN have summarized the popular positions into five categories:

I. The migration trend is the main focus. Some people said they changed to Insomnia years ago, waiting for the day when Insomnia would also encounter problems; others pointed out that Insomnia 8+ requires a cloud account, with the official reason being to facilitate advertising to users. As a result, some people migrated to Yaak; several people migrated to Bruno, one of whom said he left after being pestered by Postman’s sales team. Some even created a substitute called librepost. Others suggested that the team should simply revert to using curl with shell scripts.

II. The enshittification theory. A highly praised comment provided this logic: The longer a tool can make money without sacrificing product quality or exploiting users’ time, the slower its degradation will be. But once pathological greed takes hold, it will eventually demand to exhaust the user base. Silent automatic installation is seen as an annotation to this curve.

III. Trust mechanisms are weaker than expected. User foma-agent in the comments section conducted local verifications on two hosts (Codex CLI 0.162.1, Claude Code 2.1.302, one-time configuration directory): Codex’s trusted_hash formula is open-source, which is the sha256 of the sorted-key JSON of hooks. He calculated the hash offline in Python and wrote hooks.state manually in a text editor, triggering the hooks directly when running next time, with no one involved throughout the process. Codex also has a —dangerously-bypass-hook-trust flag; trust records only include hook declarations (command strings, events, timeouts), not script content. After creating the records, the script continues to run as normal. The current source code adds a bundle hash to plugin hooks, which is the second hash, but the hook scripts declared by users remain outside all hashes. Claude Code doesn’t even have a recording mechanism: hooks written in the settings file take effect immediately. It ran SessionStart and PreToolUse hooks in a directory it never trusted before using claude -p, triggering them directly (interactive sessions have a folder-trust dialog box, -p mode does not have one). This verification means that Postman’s self-bias trust is not a difficult operation; any script capable of writing configuration files can do it.

IV. Motive speculation and page modification identification. User NuclEnergy claimed that Postman later modified the web page content to shift responsibility. According to the review, it can be confirmed that neither the archive page nor the current page mentioned automatic installation; the plugin area always only mentioned manual installation. It’s unclear exactly what was changed. He also speculated that Postman’s intention was to monitor network calls initiated by AI and try to add itself to the allowlist but failed. Both Codex and Claude Code triggered alerts, and the script was written very roughly, almost completing silent installation (speculation, not a definitive conclusion). He also shared screenshots of an uninstall hook with a button, claiming he didn’t trust Postman’s cleanup scripts and asked GPT to help clean them up.

V. Emotional aspects. Some people directly call Postman a “virus,” others ask if this is legal, and some say such risks are unacceptable in a corporate environment. Some compare it to uTorrent: everyone has installed it and kept it due to habit. Others say it has transformed from a convenient tool over the years into something almost like a virus, with people still using it. Some calculate that the entire software it sells is worth just the price of one prompt. Some use an American postal motto to mock this: “Neither rain, nor sleet, nor consent.” The most frequently cited technical summary is another case of “what developers should not do with developer tools,” with only two key words: transparency and permission requests.

Three things ordinary users can do

  1. Self-check your configuration. In the terminal, run cat ~/.codex/config.toml to find entries like [marketplaces.postman], [plugins.”postman@postman”], and hooks.state; run cat ~/.claude/settings.json and ~/.claude/plugins/installed_plugins.json to look for Postman-related records; quickly check ~/.local/bin for any extra PostMan executable files.

  2. Clean up once you find it, and verify after cleaning. Delete the corresponding configuration sections and files. Some comments trust the official uninstall script less and choose manual cleanup or let AI assist with it; restart the agent after making changes to confirm that the hooks no longer trigger before you’re done.

  3. Establish boundaries. Before installing any plugins for your coding proxy, read the content of its SessionStart hook; if you manage a team, include “desktop software changing your agent configuration” in the supplier risk assessment. The main villain here is PostMan, and vulnerabilities in the mechanism layer apply to any software that can write to your directory.

Conclusion

Caution statement: This article does not make assumptions or accuse anyone. The core of the accusation is the self-description of the source, but log paths, source code revisions, and issue structure data can all be verified. Motive speculation and page modification accusations come entirely from netizens; this article presents them as they are, without elevating them to facts. Only three things can be confirmed: issues without labels for ten days, no official comments; neither version of the download page discloses automatic installation; the HN title is sharper than the original words of the issue author. For the entire ecosystem, regardless of how officials ultimately respond, this issue has brought up the question “who owns the decision on whether desktop software trusts agent configurations” to the forefront.

Next, focus on two key points: first, PostMan’s official response. If labels, comments, or blog posts about the issue appear, this section will upgrade to version 2; second, whether Codex and Claude Code tighten the hook trust for -p mode. What foma-agent has identified is a vulnerability on the host side; PostMan is just the first user to be caught. The 48-hour window closes around 17:22Z on November 5th. If any action occurs within this window, update version 2.

Reference sources

  • GitHub issue postmanlabs/postman-app-support#14370 (submitted by indicava on 2026-10-25; the accusation is based on the author’s own statement, and the source code can be reviewed in revision 6c8e452; state=open, 26 comments, 200 reactions, no labels, no assignee, matching the 11-04 API verification snapshot).
  • Hacker News story 50354960 (listed on 2026-11-03T17:22Z; more than 900 ▲ of verification comments, nearly 300💬, with numbers still increasing; exact values are not required in the text).
  • Comparison of Postman’s official download page (Wayback 2026-10-26 archive vs. current page on 11-04; both versions only have manual installation marketing areas, no automatic installation disclosures; user “Change Page” indicates that it presents according to his own description, without incrimination).
  • User foma-agent in the comment section tested the local verification of the trust mechanism between Codex CLI 0.162.1 and Claude Code 2.1.302 (the test was conducted in the comment section; this article did not run the test independently).
  • Distribution of 26 comments by author_association (11-04 API verification: all NONE).

Author: Yongliang

广告 · Advertisement

Frequently Asked Questions

What is the main accusation against Postman's desktop app?

The main accusation is that Postman's desktop app silently auto-installs Codex and Claude Code plugins for existing users without their consent.

How did the author gather evidence for the accusations?

The author gathered evidence from local files and open-source installer source code, verifying each path independently.

What was the scope of the SessionStart hook registered by Codex?

The SessionStart hook registered by Codex has a broad scope, including loading the postman:api-engineer skill before responding to any non-trivial API task design, implementation, mock, testing, monitoring, documentation, deployment of APIs, or Postman Flow.