ci(dotnet): sign NuGet packages with DigiCert cert in Azure Key Vault (OSS-440)#2139
Merged
Merged
Conversation
Contributor
Python Preview PackagesVersion
Install with uvAdd the TestPyPI index to your [[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
explicit = trueThen install the packages you need: # Core SDK
uv add 'ag-ui-protocol==0.0.0.dev1784156095' --index testpypi
# Integrations (each already depends on the matching ag-ui-protocol preview)
uv add 'ag-ui-langgraph==0.0.0.dev1784156095' --index testpypi
uv add 'ag-ui-crewai==0.0.0.dev1784156095' --index testpypi
# NOTE: ag-ui-agent-spec depends on pyagentspec (git-only, not on PyPI).
# You will need to install pyagentspec separately from its git repo.
uv add 'ag-ui-agent-spec==0.0.0.dev1784156095' --index testpypi
uv add 'ag_ui_adk==0.0.0.dev1784156095' --index testpypi
uv add 'ag_ui_strands==0.0.0.dev1784156095' --index testpypiInstall with pippip install \
--index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple/ \
ag-ui-protocol==0.0.0.dev1784156095
Commit: 54f92a7 |
@ag-ui/a2a-middleware
@ag-ui/a2ui-middleware
@ag-ui/event-throttle-middleware
@ag-ui/mcp-apps-middleware
@ag-ui/mcp-middleware
@ag-ui/a2a
@ag-ui/adk
@ag-ui/ag2
@ag-ui/agno
@ag-ui/aws-strands
@ag-ui/claude-agent-sdk
@ag-ui/crewai
@ag-ui/langchain
@ag-ui/langgraph
@ag-ui/llamaindex
@ag-ui/mastra
@ag-ui/pydantic-ai
@ag-ui/vercel-ai-sdk
@ag-ui/watsonx
@ag-ui/a2ui-toolkit
create-ag-ui-app
@ag-ui/client
@ag-ui/core
@ag-ui/encoder
@ag-ui/proto
commit: |
… Vault Replace the SignPath / Azure Trusted Signing provider seam with a single Azure Key Vault path: sign the packed *.nupkg with the DigiCert code-signing certificate (non-exportable, RSA-HSM) in cpk-signing-kv, using NuGetKeyVaultSignTool + GitHub OIDC (no long-lived secret). Vault URL and cert name are read from `nuget`-environment secrets; the seam stays inert until SIGNING_PROVIDER=keyvault. - publish-release.yml: preflight guard, azure/login (OIDC), install + run NuGetKeyVaultSignTool per-nupkg, verify gate; drop the now-unused actions: read permission - signing.md: rewrite for the Key Vault approach + provisioning checklist - .gitignore: ignore the stray actionlint dev binary Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tylerslaton
approved these changes
Jul 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
OSS-440 — get the
AGUI.*NuGet packages marked signed on nuget.org via author signing, using our DigiCert code-signing certificate stored (non-exportable, RSA-HSM) in Azure Key Vault (cpk-signing-kv, certcode-signing,CN=Tawkit, Inc.).This reworks the earlier provider seam (SignPath / Azure Trusted Signing) into a single Azure Key Vault + NuGetKeyVaultSignTool + GitHub OIDC path — signing with our own DigiCert cert, no long-lived secret, key never leaves the HSM.
Changes
publish-release.yml(publish-dotnetjob): pack → preflight → azure/login (OIDC) → sign each*.nupkg→ verify → push. Gated onSIGNING_PROVIDER=keyvaultand inert until that var is set, so it's safe to merge ahead of provisioning. Vault URL + cert name read fromnuget-environment secrets. Dropped the now-unusedactions: readpermission.sdks/dotnet/docs/signing.md: rewritten for the Key Vault approach + provisioning checklist..gitignore: ignore the strayactionlintdev binary (removed from the tree).Validation
actionlint1.7.12 — clean (exit 0).-kvu/-kvc/-kva/-fd/-tr/-td).signing.md)Merging is safe (inert). To turn signing on:
Key Vault Crypto User+Key Vault Certificate Useron the vault (pending Azure admin —marklacksroleAssignments/write).repo:ag-ui-protocol/ag-ui:environment:nuget.nugetenv — set secretsAZURE_KEY_VAULT_URL,CODE_SIGNING_CERT_NAME+ varSIGNING_PROVIDER=keyvault.VersionPrefix0.0.3 → 0.0.4 = first signed release.Ref: OSS-440 (completes when provisioning + a signed release land).
🤖 Generated with Claude Code