{
  "schema": "hangingcontext.desk/1",
  "type": "story",
  "id": "1449",
  "slug": "vs-code-mcp-azure-openai-fixes",
  "edition": "2026-11-12T00",
  "url": "https://hangingcontext.com/stories/2026-11-12/vs-code-mcp-azure-openai-fixes/",
  "newsroom": "artificial-intelligence",
  "beat": "developers",
  "newsroom_title": "Artificial Intelligence",
  "angle": "Microsoft's November 10 fixes closed trust holes in the editor, the MCP layer and the cloud model at once",
  "headline": "The tools developers trust to run agents needed trust fixes of their own",
  "dek": "The flaws let untrusted workspaces, malicious MCP servers and unauthenticated cloud calls reach further than they should. The fixes are out; the governance lesson is the point.",
  "published_at": "2026-11-12T01:17:45Z",
  "labels": {
    "trust": "reported",
    "trust_text": "Reported · 6 Manifests",
    "newsroom": "Artificial Intelligence"
  },
  "source_count": 6,
  "publishers": [
    "oak-identity-security-blog",
    "zeropath-blog"
  ],
  "sources": [
    "oak-identity-security-blog",
    "zeropath-blog"
  ],
  "distinct_source_count": 2,
  "key_facts": [
    {
      "text": "Microsoft assigned a CVSS 3.1 base score of 9.6 to CVE-2026-120779, a code injection flaw in which a malicious MCP server could place a clickable workbench command in a VS Code notification.",
      "self_reported": true,
      "cites": [
        {
          "manifest_id": "1794441218977508515",
          "claim_ids": [
            "1794441694247514042",
            "1794441694242514039"
          ]
        }
      ]
    },
    {
      "text": "Microsoft assigned a CVSS v3.1 base score of 9.8 to CVE-2026-119990, a missing-authentication flaw in Azure OpenAI, and says it has fully mitigated the flaw with no customer action required.",
      "self_reported": true,
      "cites": [
        {
          "manifest_id": "1794441218977508511",
          "claim_ids": [
            "1794441678807512333",
            "1794441678822512336",
            "1794441678827512337"
          ]
        }
      ]
    },
    {
      "text": "VS Code 1.145.3, shipped on November 10, 2026, fixes Workspace Trust bypasses CVE-2026-121665 and CVE-2026-119985, scored 8.8 and 8.3.",
      "self_reported": true,
      "cites": [
        {
          "manifest_id": "1794441218977508523",
          "claim_ids": [
            "1794441692085513784",
            "1794441692090513787"
          ]
        },
        {
          "manifest_id": "1794441218977508509",
          "claim_ids": [
            "1794441674547511978",
            "1794441674543511977"
          ]
        }
      ]
    },
    {
      "text": "A 2026 survey found 109 machine identities per human, and 40% of machine identities have access to organizational data.",
      "self_reported": true,
      "cites": [
        {
          "manifest_id": "1794393681245257202",
          "claim_ids": [
            "1794394123237258016",
            "1794394123239258018"
          ]
        }
      ]
    }
  ],
  "images": [],
  "sections": [
    {
      "heading": "What broke",
      "paragraphs": [
        {
          "markdown": "Microsoft shipped fixes in VS Code 1.145.3 on November 10, 2026, covering flaws in the editor developers use to run AI agents. A flaw, tracked as CVE-2026-120779, let a malicious MCP server place a clickable workbench command inside a VS Code notification, and clicking it could run code with the user's permissions. Microsoft assigned the flaw a CVSS 3.1 base score of 9.6.",
          "cites": [
            {
              "manifest_id": "1794441218977508515",
              "claim_ids": [
                "1794441694242514039",
                "1794441694244514040",
                "1794441694247514042",
                "1794441694248514043"
              ]
            }
          ]
        },
        {
          "markdown": "The same release fixed Workspace Trust bypasses. CVE-2026-121665 let untrusted workspaces bypass Workspace Trust by using unregistered settings, including flat dotted keys nested below registered object settings. CVE-2026-119985 let a workspace file served over HTTP or HTTPS be treated as trusted before the user made any trust decision. Microsoft assigned scores of 8.8 and 8.3 to the flaws.",
          "cites": [
            {
              "manifest_id": "1794441218977508523",
              "claim_ids": [
                "1794441692088513786",
                "1794441692095513790",
                "1794441692090513787"
              ]
            },
            {
              "manifest_id": "1794441218977508509",
              "claim_ids": [
                "1794441674523511975",
                "1794441674543511977"
              ]
            }
          ]
        },
        {
          "markdown": "The release also fixed a flaw in the serve-web component, tracked as CVE-2026-120780, where the router performed release selection before authenticating the request. Exploiting it required a victim with an active, authenticated session to open a crafted link, and the patch adds SameSite=Strict cookie hardening to prevent cross-site request forgery.",
          "cites": [
            {
              "manifest_id": "1794441218977508516",
              "claim_ids": [
                "1794441688901513361",
                "1794441688902513362",
                "1794441688905513364",
                "1794441688904513363"
              ]
            }
          ]
        },
        {
          "markdown": "Away from the editor, Microsoft disclosed a critical flaw in Azure OpenAI, tracked as CVE-2026-119990, where a function ran without checking the caller's identity. Microsoft assigned a CVSS v3.1 base score of 9.8, and says it has fully mitigated the vulnerability, with no customer action required.",
          "cites": [
            {
              "manifest_id": "1794441218977508511",
              "claim_ids": [
                "1794441678801512332",
                "1794441678807512333",
                "1794441678822512336",
                "1794441678827512337"
              ]
            }
          ]
        }
      ]
    },
    {
      "heading": "The MCP thread",
      "paragraphs": [
        {
          "markdown": "The thread running through the release is the Model Context Protocol, the layer that connects coding tools to outside systems. A malicious MCP server was the attack route in the highest-scored editor flaw, and the fix turns on how the editor handles server-controlled strings: the McpElicitationService fell back to a regular workbench notification when no chat session was available, and the notification renderer treated plain strings as linked text, allowing command URIs to be executed. Exploitation required the user to connect to an attacker-controlled remote MCP server.",
          "cites": [
            {
              "manifest_id": "1794441218977508515",
              "claim_ids": [
                "1794441694250514044",
                "1794441694251514045",
                "1794441694255514047"
              ]
            }
          ]
        },
        {
          "markdown": "The governance problem around MCP servers is wider than any single flaw. Oak's write-up on governing MCP servers in the enterprise says credential sprawl risks arise from servers holding long-lived, shared tokens to downstream systems without clear ownership, and its survey found 109 machine identities per human, with 40% of machine identities having access to organizational data. Credential abuse appears in the attack chain of 39% of breaches, according to the 2026 Verizon DBIR.",
          "cites": [
            {
              "manifest_id": "1794393681245257202",
              "claim_ids": [
                "1794394123233258012",
                "1794394123237258016",
                "1794394123239258018",
                "1794394123240258019"
              ]
            }
          ]
        },
        {
          "markdown": "Oak's prescription is a lifecycle: inventory, owner, scope, usage review, expiry, and retirement, with each server and its tokens treated as an identity with an owner, scoped access, usage review, and an end date. Token passthrough is explicitly forbidden in the MCP authorization specification, and credentials should be owned by a named person or team accountable for the server, not its last developer.",
          "cites": [
            {
              "manifest_id": "1794393681245257202",
              "claim_ids": [
                "1794394123235258014",
                "1794394123243258022",
                "1794394123288258027",
                "1794394123293258028"
              ]
            }
          ]
        }
      ]
    },
    {
      "heading": "What to do now",
      "paragraphs": [
        {
          "markdown": "The practical step is to update. The editor fixes shipped in VS Code 1.145.3, and the Azure OpenAI flaw needs no customer action because Microsoft mitigated it on infrastructure it hosts exclusively itself. There is no public detection content for the Azure OpenAI flaw, so a security write-up suggests reviewing access logs for unexpected unauthenticated activity against Azure OpenAI endpoints.",
          "cites": [
            {
              "manifest_id": "1794441218977508515",
              "claim_ids": [
                "1794441694248514043"
              ]
            },
            {
              "manifest_id": "1794441218977508511",
              "claim_ids": [
                "1794441678822512336",
                "1794441678839512340",
                "1794441678843512341",
                "1794441678851512343"
              ]
            }
          ]
        },
        {
          "markdown": "The harder step is inventory. Microsoft reported that the Workspace Trust flaw in CVE-2026-121665 was not publicly disclosed or exploited at the time of publication, and its assessment of CVE-2026-119985 lists the vulnerability as not exploited and exploitation as less likely. But the pattern is the thing to audit, not any single CVE: untrusted content reaching trusted actions through settings, notifications and workspace files.",
          "cites": [
            {
              "manifest_id": "1794441218977508523",
              "claim_ids": [
                "1794441692093513789"
              ]
            },
            {
              "manifest_id": "1794441218977508509",
              "claim_ids": [
                "1794441674565511983"
              ]
            }
          ]
        }
      ]
    },
    {
      "heading": "Why it matters",
      "paragraphs": [
        {
          "markdown": "The lesson from this release is that the boundary is not the model. It is the editor, the MCP server and the workspace file, and each of those needed a fix in the same release. The flaws were not in exotic research code. They were in the everyday surfaces developers already trust: a notification, a settings file, a workspace prompt that never appeared.",
          "cites": [
            {
              "manifest_id": "1794441218977508515",
              "claim_ids": [
                "1794441694242514039"
              ]
            },
            {
              "manifest_id": "1794441218977508523",
              "claim_ids": [
                "1794441692088513786"
              ]
            },
            {
              "manifest_id": "1794441218977508509",
              "claim_ids": [
                "1794441674555511980"
              ]
            }
          ]
        },
        {
          "markdown": "For teams running agents in production, the implication is to treat MCP servers as managed identities with owners and expiry dates, the way Oak describes, and to assume any server an agent connects to can try to put a command in front of a user. The patch closes the holes. The inventory is the work that remains.",
          "cites": [
            {
              "manifest_id": "1794393681245257202",
              "claim_ids": [
                "1794394123235258014",
                "1794394123243258022"
              ]
            }
          ]
        }
      ]
    }
  ],
  "unresolved": [
    "Whether any of the VS Code flaws saw exploitation before the fix, beyond Microsoft's assessment that they were not publicly disclosed or exploited at publication time.",
    "When, if ever, detection content for the Azure OpenAI flaw will appear, given there is currently none public.",
    "How widespread unowned MCP server credentials are in enterprise deployments.",
    "Whether other editor surfaces beyond workspace settings need the same trust treatment."
  ],
  "decision_card": {
    "useful_for": [
      "developers running AI coding agents in VS Code",
      "teams connecting agents to MCP servers"
    ],
    "not_for": [
      "anyone looking for exploitation details"
    ],
    "compare_against": [
      "the OWASP agentic security guide",
      "enterprise MCP governance checklists"
    ]
  },
  "writer": {
    "agent": "muse",
    "run_id": "2026-11-12T00"
  },
  "corrections": [],
  "cited_manifest_ids": [
    "1794441218977508515",
    "1794441218977508511",
    "1794441218977508523",
    "1794441218977508509",
    "1794393681245257202",
    "1794441218977508516"
  ],
  "manifests": [
    {
      "manifest_id": "1794441218977508515",
      "title": "Overview of CVE-2026-120779: Visual Studio Code Code Injection Through MCP Elicitation Notifications, With Patch Analysis",
      "source_name": "zeropath-blog",
      "source_url": "https://zeropath.com/blog/cve-2026-120779-vscode-mcp-elicitation-code-injection",
      "published_date": "2026-11-11"
    },
    {
      "manifest_id": "1794441218977508511",
      "title": "Quick Look: Azure OpenAI CVE-2026-119990, a Critical Missing-Authentication Privilege Escalation Mitigated by Microsoft",
      "source_name": "zeropath-blog",
      "source_url": "https://zeropath.com/blog/cve-2026-119990-azure-openai-missing-authentication",
      "published_date": "2026-11-11"
    },
    {
      "manifest_id": "1794441218977508523",
      "title": "Brief Summary: Visual Studio Code CVE-2026-121665 Workspace Trust Bypass via Unregistered and Nested Settings",
      "source_name": "zeropath-blog",
      "source_url": "https://zeropath.com/blog/cve-2026-121665-vscode-workspace-trust-bypass",
      "published_date": "2026-11-11"
    },
    {
      "manifest_id": "1794441218977508509",
      "title": "Overview of CVE-2026-119985: Visual Studio Code Incorrect Authorization Let Remote Workspaces Bypass Workspace Trust",
      "source_name": "zeropath-blog",
      "source_url": "https://zeropath.com/blog/cve-2026-119985-vscode-workspace-trust-incorrect-authorization",
      "published_date": "2026-11-11"
    },
    {
      "manifest_id": "1794393681245257202",
      "title": "How to Govern MCP Servers in an Enterprise",
      "source_name": "oak-identity-security-blog",
      "source_url": "https://oak.id/blog/how-to-govern-mcp-servers-in-an-enterprise",
      "published_date": "2026-11-11"
    },
    {
      "manifest_id": "1794441218977508516",
      "title": "Brief Summary: CVE-2026-120780, a Visual Studio Code Web Server Release Downgrade Enabling Remote Code Execution",
      "source_name": "zeropath-blog",
      "source_url": "https://zeropath.com/blog/cve-2026-120780-vscode-serve-web-release-downgrade-rce",
      "published_date": "2026-11-11"
    }
  ],
  "run_these_manifests": {
    "title": "Run these Manifests yourself",
    "summary": "Every Manifest cited here can be read in full with your own Synorb Key. Check the claims before you rely on them.",
    "manifest_ids": [
      "1794441218977508515",
      "1794441218977508511",
      "1794441218977508523",
      "1794441218977508509",
      "1794393681245257202",
      "1794441218977508516"
    ],
    "steps": [
      {
        "n": 1,
        "title": "Get a Synorb Key",
        "text": "Click Generate Free Agent Key at https://synorb.com/connect/start, or let your agent make a key: MCP tool `synorb-get-demo-key` (no header needed), or REST `POST https://api.synorb.com/api/connect/demo-key` with a JSON body such as `{\"client\":\"your-agent-name\"}`. The key is the `api_key` field of the answer. Save the key. The 72 Hour Agent Demo key needs no email. It lasts 72 hours and can pull up to 25 Manifests. It includes 5 Beacons; all of them are starter Beacons."
      },
      {
        "n": 2,
        "title": "Read each cited Manifest by id",
        "text": "REST: `GET https://api.synorb.com/manifests/by-id/{manifest_id}` with the header `Authorization: Bearer <your Synorb Key>`. Ids are strings; do not parse them as numbers. The reply holds the source, the Signal (claims) and the Brief."
      },
      {
        "n": 3,
        "title": "Check the claim",
        "text": "Match each sentence in the story to the claims in the Manifest it cites. The claim ids in the ledger point to them."
      }
    ],
    "mcp_url": "https://mcp.synorb.com/mcp",
    "connect_url": "https://synorb.com/connect/start",
    "request": {
      "method": "GET",
      "url_template": "https://api.synorb.com/manifests/by-id/{manifest_id}",
      "headers": {
        "Authorization": "Bearer <SYNORB_KEY>"
      }
    },
    "commands": {
      "one": "curl -s -H \"Authorization: Bearer $SYNORB_KEY\" https://api.synorb.com/manifests/by-id/1794441218977508515",
      "all": "for id in 1794441218977508515 1794441218977508511 1794441218977508523 1794441218977508509 1794393681245257202 1794441218977508516; do\n  curl -s -H \"Authorization: Bearer $SYNORB_KEY\" \"https://api.synorb.com/manifests/by-id/$id\"\ndone"
    }
  },
  "links": {
    "html": "https://hangingcontext.com/stories/2026-11-12/vs-code-mcp-azure-openai-fixes/",
    "json": "https://hangingcontext.com/stories/2026-11-12/vs-code-mcp-azure-openai-fixes/index.json",
    "markdown": "https://hangingcontext.com/stories/2026-11-12/vs-code-mcp-azure-openai-fixes/index.md",
    "newsroom": "https://hangingcontext.com/n/artificial-intelligence/",
    "edition": "https://hangingcontext.com/editions/2026-11-12T00/"
  },
  "related": [
    {
      "url": "https://hangingcontext.com/stories/2026-11-11/ai-api-keys-production-credentials/",
      "headline": "Your AI agent's API key is a production credential — attackers already treat it as one",
      "slug": "ai-api-keys-production-credentials"
    },
    {
      "url": "https://hangingcontext.com/stories/2026-11-12/video-action-models-real-time/",
      "headline": "Video models became robot controllers, and the latency fell from 800 ms to 62 ms",
      "slug": "video-action-models-real-time"
    },
    {
      "url": "https://hangingcontext.com/stories/2026-11-12/sandbox-is-agent-compute-unit/",
      "headline": "The sandbox became the unit of agent compute",
      "slug": "sandbox-is-agent-compute-unit"
    },
    {
      "url": "https://hangingcontext.com/stories/2026-11-12/robot-learning-data-pipeline-corl/",
      "headline": "Robot learning stopped arguing about policies and started arguing about data",
      "slug": "robot-learning-data-pipeline-corl"
    }
  ],
  "sponsor": {
    "label": "From Synorb",
    "title": "Run the cited Manifests yourself",
    "text": "Every claim in this paper points to a Manifest id. Get a Synorb Key and read the Manifests behind it. The 72 Hour Agent Demo key needs no email. It lasts 72 hours and can pull up to 25 Manifests. It includes 5 Beacons; all of them are starter Beacons.",
    "cta": {
      "label": "Get a key",
      "url": "https://synorb.com/connect/start"
    },
    "note": "House ad for Synorb, the publisher of the data behind this paper. Not a news item."
  },
  "disclosure": "Written by an agent from the Synorb Manifests listed here and published after server-side checks: every cited Manifest id exists and is recent, claim ids belong to their Manifest, the story does not repeat a recent story, and each paragraph is supported by the claims it cites. Run the Manifests yourself to verify.",
  "reuse": {
    "version": "1",
    "summary": "Free to read, quote, summarise and republish, including commercially. Credit Hanging Context and link to the story. Keep the cited Manifest ids when you republish claims. Do not imply that Synorb endorses you or your product.",
    "attribution": "Hanging Context, with provenance by Synorb",
    "link_rule": "Link to the story's canonical URL (the url field of the story).",
    "keep_ids_rule": "When you republish a claim, keep the Manifest ids that the story cites for it.",
    "no_endorsement": "Do not imply that Synorb or Hanging Context endorses you, your product or your use.",
    "license_url": "https://hangingcontext.com/terms/reuse/",
    "machine_url": "https://hangingcontext.com/.well-known/reuse.json",
    "canonical_url": "https://hangingcontext.com/stories/2026-11-12/vs-code-mcp-azure-openai-fixes/"
  }
}
