Skip to content

VS Code publishing: confirm VSCE_PAT scope before 2026-12-01, then move to Entra ID #120

Description

@jimisola

Re-filed from reqstool/.github-private#33, which was lost when that repo was retired. The org no longer has a writable private repo, so this is public — see the note at the end on what that changes.

Public counterpart: reqstool/.github#98.

Why this has a deadline

Azure DevOps is retiring global personal access tokens:

Date What happens
2026-03-15 Creating or regenerating a global PAT blocked — already past
2026-12-01 All existing global PATs stop working

If VSCE_PAT is a global PAT, this repo becomes unpublishable on 1 December. The failure mode is the unpleasant one: it fails at the publish step, after tag, build, assets and approval have all already succeeded.

If it is already organization-scoped with Marketplace > Manage, the deadline does not apply and item 2 is ordinary hygiene rather than a countdown.

1. Determine whether VSCE_PAT is global or organization-scoped

This decides whether anything below is urgent, and it needs someone with Azure DevOps access.

Check under User settings → Personal access tokens. The scope is not visible from GitHub, so no repo — and no amount of poking at this one — can answer it.

If it is global, the cheap stopgap is reissuing it as an organization-scoped PAT with Marketplace > Manage and updating the secret. That buys time without touching any workflow: the publish path reads VSCE_PAT and does not care how it was issued.

2. Move to Entra ID and drop the stored token

The real fix, and consistent with the rest of the org — npm and PyPI both publish via OIDC with no stored credential.

reqstool/.github's typescript-publish-to-vscode.yml already accepts the switch:

azure-credential: true    # defaults to false

which runs vsce publish --azure-credential --packagePath … instead of using VSCE_PAT. vsce@3.9.2 is already pinned here and carries the flag.

Deliberately not yet written, because it could not be verified without a tenant to test against:

  • Entra app registration and federated credential for the marketplace publisher
  • Almost certainly an azure/login step before the publish step
  • Almost certainly id-token: write on the publish job, which currently declares only what the PAT path needs

Note on visibility

The original was filed privately because it concerns publishing credentials and Azure tenant configuration, and GitHub has no maintainer-only visibility on a public repo's issues. That original also recorded that nothing in it discloses more than the public reqstool/.github#98, which already states VSCE_PAT may be a global PAT.

So the text above is safe here. Tenant-specific detail — directory or application IDs, federated credential subjects — should not be added to this issue. If any is needed, it belongs somewhere non-public.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions