{"id":95073,"date":"2026-04-06T17:20:50","date_gmt":"2026-04-07T00:20:50","guid":{"rendered":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci"},"modified":"2026-04-07T08:47:38","modified_gmt":"2026-04-07T15:47:38","slug":"npm-trusted-publishing-now-supports-circleci","status":"publish","type":[3522],"link":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci","title":{"rendered":"npm trusted publishing now supports CircleCI"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>npm trusted publishing now supports CircleCI as an OIDC provider, joining GitHub Actions and GitLab CI\/CD. Maintainers publishing from CircleCI workflows can now eliminate stored credentials entirely and authenticate directly through their CI\/CD pipeline.<\/p>\n<p>With this expansion, trusted publishing now covers a large majority of npm publishers by CI provider. Configuration is available through the npm website and the <code>npm trust<\/code> CLI command. See the <a href=\"https:\/\/docs.npmjs.com\/trusted-publishers\">trusted publishing documentation<\/a> for setup instructions.<\/p>\n<p>We&rsquo;re also shipping dark mode for the <a href=\"https:\/\/npmjs.com\/\">npmjs.com<\/a> website, one of the most requested features from the community. Our team built this using <a href=\"https:\/\/github.com\/features\/copilot\">GitHub Copilot agent mode<\/a>, allowing us to deliver it with minimal engineering time beyond final review and shipping. Our focus remains on strengthening npm security and enhancing maintainer agency over the packages they publish.<\/p>\n<p>To share feedback or ask questions, join the <a href=\"https:\/\/github.com\/orgs\/community\/discussions\/191807\">community discussion<\/a>.<\/p>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>npm trusted publishing now supports CircleCI as an OIDC provider, joining GitHub Actions and GitLab CI\/CD. Maintainers publishing from CircleCI workflows can now eliminate stored credentials entirely and authenticate directly&hellip;<\/p>\n","protected":false},"author":2106,"featured_media":0,"template":"","meta":{"_gh_post_show_toc":"","_gh_post_is_no_robots":"","_gh_post_is_featured":"","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"","_gh_post_sq_img_id":"","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","footnotes":"","_links_to":"","_links_to_target":"","primary_cta":"","primary_cta_url":"","secondary_cta":"","secondary_cta_url":""},"label":[3630],"group":[3833],"coauthors":[3100],"class_list":["post-95073","changelog","type-changelog","status-publish","hentry","changelog-type-improvements","changelog-label-supply-chain-security","changelog-group-04-2026"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>npm trusted publishing now supports CircleCI - GitHub Changelog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"npm trusted publishing now supports CircleCI \u00b7 GitHub Changelog\" \/>\n<meta property=\"og:description\" content=\"npm trusted publishing now supports CircleCI as an OIDC provider, joining GitHub Actions and GitLab CI\/CD. Maintainers publishing from CircleCI workflows can now eliminate stored credentials entirely and authenticate directly&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-07T15:47:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2024\/08\/d34e9c19123898a8a886147f37a1d167130d1c15be6d399a9c4b30ee6f2a7395-1200x630-1.png?fit=1200%2C630\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n\t<meta name=\"twitter:label2\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data2\" content=\"Allison\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/changelog\\\/2026-04-06-npm-trusted-publishing-now-supports-circleci\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/changelog\\\/2026-04-06-npm-trusted-publishing-now-supports-circleci\\\/\",\"name\":\"npm trusted publishing now supports CircleCI - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"datePublished\":\"2026-04-07T00:20:50+00:00\",\"dateModified\":\"2026-04-07T15:47:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/changelog\\\/2026-04-06-npm-trusted-publishing-now-supports-circleci\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/changelog\\\/2026-04-06-npm-trusted-publishing-now-supports-circleci\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/changelog\\\/2026-04-06-npm-trusted-publishing-now-supports-circleci\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Changelogs\",\"item\":\"https:\\\/\\\/github.blog\\\/changelog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"npm trusted publishing now supports CircleCI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"npm trusted publishing now supports CircleCI - GitHub Changelog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/","og_locale":"en_US","og_type":"article","og_title":"npm trusted publishing now supports CircleCI \u00b7 GitHub Changelog","og_description":"npm trusted publishing now supports CircleCI as an OIDC provider, joining GitHub Actions and GitLab CI\/CD. Maintainers publishing from CircleCI workflows can now eliminate stored credentials entirely and authenticate directly&hellip;","og_url":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/","og_site_name":"The GitHub Blog","article_modified_time":"2026-04-07T15:47:38+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/github.blog\/wp-content\/uploads\/2024\/08\/d34e9c19123898a8a886147f37a1d167130d1c15be6d399a9c4b30ee6f2a7395-1200x630-1.png?fit=1200%2C630","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute","Written by":"Allison"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/","url":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/","name":"npm trusted publishing now supports CircleCI - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"datePublished":"2026-04-07T00:20:50+00:00","dateModified":"2026-04-07T15:47:38+00:00","breadcrumb":{"@id":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/changelog\/2026-04-06-npm-trusted-publishing-now-supports-circleci\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"Changelogs","item":"https:\/\/github.blog\/changelog\/"},{"@type":"ListItem","position":3,"name":"npm trusted publishing now supports CircleCI"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/changelogs\/95073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/changelogs"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/changelog"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2106"}],"version-history":[{"count":2,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/changelogs\/95073\/revisions"}],"predecessor-version":[{"id":95111,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/changelogs\/95073\/revisions\/95111"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=95073"}],"wp:term":[{"taxonomy":"changelog-type","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/type?post=95073"},{"taxonomy":"changelog-label","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/label?post=95073"},{"taxonomy":"changelog-group","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/group?post=95073"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=95073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}