3c39a99b9a
FromEnrollment (new default) consumes an InfisicalCertificateApplicationEnrollment and auto-fills ServerUrl from scep.scepEndpointUrl, CAThumbprint from the RA certificate thumbprint, and mints a fresh dynamic challenge automatically when challengeType=dynamic and -Challenge is not supplied. FromProfile preserves the legacy projection from an InfisicalCertificateProfile but now requires -ApplicationId so the server URL is built against /scep/applications/{appId}/profiles/{profileId}/pkiclient.exe. Manual requires explicit -ServerUrl, -Challenge, and -UniqueId. Module manifest, help XML, and build.ps1 expectedCmds list updated to register the three new cmdlets. CHANGELOG updated.
43 KiB
43 KiB
Changelog
All notable changes to this project will be documented in this file.
The format follows Keep a Changelog loosely, but version numbers use the build timestamp format yyyy.MM.dd.HHmm.
Unreleased
2026.06.04.2305
- Build produced from commit
485ee8a7dd.
Unreleased (carried forward)
Get-InfisicalCertificateApplicationadded withList(default),ById, andByNameparameter sets. Binds to/api/v1/cert-manager/applications(list) and/api/v1/cert-manager/applications/{applicationId}//by-name/{name}for single retrieval. Requests carry thex-infisical-project-idheader so the certificate-manager scope resolves correctly. NewInfisicalCertificateApplicationmodel surfaces id, project, name, description, and counts.Get-InfisicalCertificateApplicationEnrollmentadded. Returns the API/EST/ACME/SCEP enrollment configuration for an application/profile pair (GET /api/v1/cert-manager/applications/{applicationId}/profiles/{profileId}/enrollment). The newInfisicalCertificateApplicationEnrollmentmodel includes sub-blocks for each enrollment protocol; the SCEP block computes a SHA-1RaCertificateThumbprintfrom the RA certificate PEM so it can be fed directly into MDM payloads.New-InfisicalScepDynamicChallengeadded. WrapsPOST /scep/applications/{applicationId}/profiles/{profileId}/challengeand returns the minted challenge as aSecureString(default) or string (-AsPlainText). The endpoint is gated by the dynamic-challenge feature on the target Infisical instance and by the calling identity's permission oncertificate-application-enrollment.Get-InfisicalScepMdmProfilereworked into three parameter sets.FromEnrollment(new default) consumes anInfisicalCertificateApplicationEnrollmentand auto-resolvesServerUrlfromscep.scepEndpointUrl,CAThumbprintfrom the RA certificate, and the SCEP challenge (auto-minting whenchallengeType=dynamicand-Challengeis not supplied).FromProfilekeeps the legacy projection from anInfisicalCertificateProfile, now requires-ApplicationId, and the default server URL is built against/scep/applications/{appId}/profiles/{profileId}/pkiclient.exe.Manualrequires explicit-ServerUrl,-Challenge, and-UniqueId.InfisicalApiInvokeraccepts an optionalextraHeadersargument so callers can attach thex-infisical-project-idheader and overrideAcceptfor plain-text responses (used by the new SCEP challenge endpoint).
2026.06.04.2147
- Build produced from commit
183fb48c32.
Unreleased (carried forward)
Get-InfisicalScepMdmProfileadded. Projects anInfisicalCertificateProfile(pipeline-bound) into a newInfisicalScepMdmProfilemodel that mirrors the WindowsClientCertificateInstall/SCEPCSP node set.-ServerUrldefaults to{baseUri}/scep/{profileId}/pkiclient.exederived from the active connection (thepkiclient.exesuffix is the RFC 8894 / Cisco SCEP client compatibility holdover, not a server-side executable).-UniqueIddefaults to a sanitized slug.-Challengeis aSecureStringdecrypted only when materializing the model.KeyAlgorithmandEkuMappingare inherited from the source profile defaults unless overridden.Export-InfisicalScepMdmProfileadded. Serializes the model viaInfisicalScepMdmProfile.ToSyncMl()(XDocument build, XmlWriter emit, XmlReader round-trip validation) and writes the result to-Pathas UTF-8 without BOM. Auto-creates the target directory, honors-WhatIf/-Confirm, and follows the project rule for-Force: if the destination exists without-Force, the cmdlet logs a warning and returns instead of throwing.-PassThruemits the resultingFileInfo.Write-InfisicalScepMdmProfileToWmiadded. Submits the same model to the local MDM Bridge WMI provider by invokingNew-CimInstance -Namespace root/cimv2/mdm/dmmap -ClassName MDM_ClientCertificateInstall_SCEP02 -Property <hashtable>through the host runspace (no new package references). Guards: throwsPlatformNotSupportedExceptionoff Windows; device-scope enrollment requires an elevated session unless-SkipElevationCheckis passed; supports-WhatIf/-Confirm;-PassThruemits the returned CIM instance. Override-ClassNamewhen targeting a different SCEP CSP version on the host.
2026.06.04.2112
- Build produced from commit
3754de74f6.
Unreleased (carried forward)
- Infisical API error responses are now parsed to surface the server-side
message,error, andreqIdfields. The 4xx/5xx exception message includes the human-readable explanation (e.g. "The project is of type secret-manager") instead of an opaqueInfisical API returned 400 (Bad Request). TheInfisicalApiExceptiongainsApiErrorMessageandApiRequestIdproperties;InfisicalErrorDetailscarries the same fields so PowerShell error records and logger output expose them. Get-InfisicalCertificateProfileadded withList(default) andByIdparameter sets. List binds toGET /api/v1/cert-manager/certificate-profiles(optional-Limit,-Offset,-IncludeConfigs); ById binds toGET /api/v1/cert-manager/certificate-profiles/{certificateProfileId}. NewInfisicalCertificateProfilemodel surfaces ca/policy ids, slug, enrollment type, per-profile defaults (ttl, key/extended key usages), and the embedded CA/policy/apiConfig summaries.Get-InfisicalCertificatePolicyadded withList(default) andByIdparameter sets. List binds toGET /api/v1/cert-manager/certificate-policies(optional-Limit,-Offset); ById binds toGET /api/v1/cert-manager/certificate-policies/{certificatePolicyId}. NewInfisicalCertificatePolicymodel surfaces subject, SANs, key usages, extended key usages, algorithms, and validity. Polymorphic string-or-array fields (allowed,required,keyAlgorithm) are normalized to arrays;sansis normalized whether the API returns an object or an array.Get-InfisicalCertificateAuthoritygains a-Kindparameter on the List parameter set with valuesInternal(default, preserves prior behavior against/api/v1/cert-manager/ca/internal),Any(binds to the generic/api/v1/cert-manager/caendpoint which returns both internal and ACME CAs), andAcme(uses the generic endpoint and client-side filters to ACME issuers only). ById retrieval is unchanged and still resolves against the internal CA endpoint.Request-InfisicalCertificategains aByProfileparameter set bound by the new-CertificateProfileIdparameter (aliasProfileId). The cmdlet generates a local keypair and CSR as usual, then POSTs to/api/v1/cert-manager/certificateswith the profile id, the CSR, and a subject/attribute envelope (commonName, organization, organizationalUnit, country, state, locality, ttl, notBefore, notAfter, keyUsages, extendedKeyUsages). The wrapped response ({certificate:{certificate,certificateChain,issuingCaCertificate,serialNumber,certificateId,privateKey}, certificateRequestId, status, message}) is unwrapped into the existingInfisicalSignedCertificateshape so the install / reuse / chain-completion paths continue to work unchanged. Issuance that returns without a certificate body (e.g. statuspending_approvalorpending_validation) is logged as a warning and the cmdlet emits a status-onlyInfisicalCertificateResult(newStatus,StatusMessage,CertificateRequestIdproperties) instead of throwing; install / chain / private-key-write steps are skipped in that case. Whether issuance is immediate or pending is dictated by the certificate policy bound to the profile (auto-approve vs. manual review and any required validation).
2026.06.04.1920
- Build produced from commit
0f8f44afdb.
Unreleased (carried forward)
build.ps1gains a-CommitArtifactsswitch that, after a successful build, stages and commits only the build outputs (Module/PSInfisicalAPI/bin/**,Module/PSInfisicalAPI/PSInfisicalAPI.psd1, and the auto-insertedCHANGELOG.mdbuild stamp) with a message that references the source commit whose hash is now embedded inBuildCommitHash. The switch is mutually exclusive with the older broader-CommitOnSuccess(which still usesgit add -A). README extended with a "Committing source and build artifacts in lockstep" section describing the recommended two-commit workflow.
2026.06.04.1917
- Build produced from commit
a34db831d8.
Unreleased (carried forward)
2026.06.04.1915
- Build produced from commit
2489b7adca.
Unreleased (carried forward)
2026.06.04.1911
- Build produced from commit
51bf819c37.
Unreleased (carried forward)
2026.06.04.1906
- Build produced from commit
51bf819c37.
Unreleased (carried forward)
- BREAKING: Removed the plural-noun discovery cmdlets
Get-InfisicalProjects,Get-InfisicalEnvironments,Get-InfisicalFolders,Get-InfisicalTags,Get-InfisicalSecrets, andGet-InfisicalCertificates. Their behavior is now folded into the corresponding singular cmdlets via aList(default) / single-record parameter set pair, matching the existingGet-InfisicalCertificateAuthorityprecedent. Callers should drop the trailings; invocation without the identity parameter (-ProjectId,-EnvironmentSlugOrId,-FolderNameOrId,-TagSlugOrId,-SecretName,-SerialNumber) now returns the list, and supplying the identity parameter returns the single record. No back-compat aliases were added. - Added
Get-InfisicalPkiSubscriberwithList(default) andByNameparameter sets, backed by newInfisicalPkiClient.ListPkiSubscribersandGetPkiSubscribermethods, anInfisicalPkiSubscribermodel, and corresponding DTOs/mapper. Use the emittedName(slug) onRequest-InfisicalCertificate -PkiSubscriberSlug. - Bug fix:
Request-InfisicalCertificate -PkiSubscriberSlug ...was returning 404 because the registry'sSignCertificateBySubscriberendpoint pointed at/api/v1/pki/pki-subscribers/{subscriberName}/sign-certificateand/api/v1/cert-manager/pki-subscribers/.... Per Infisical'sv1/index.ts, the subscriber router is mounted at/pki/subscribers, so the single correct path is/api/v1/pki/subscribers/{subscriberName}/sign-certificate. The redundantcert-managertemplate was removed; the PKI endpoint registry tests were updated to match. - Updated MAML help in
Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml: the six consolidated cmdlets and the newGet-InfisicalPkiSubscribereach ship three examples — two straight-line invocations (one per parameter set) plus oneOrderedDictionarysplat example. All in-text references to the removed plural cmdlets across other cmdlets' examples were updated to the singular form. build.ps1:CmdletsToExportand theTest-ModuleImportsexpected cmdlet list were updated to drop the six plural cmdlets and addGet-InfisicalPkiSubscriber(total: 34 exported cmdlets).
2026.06.04.1825
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1820
- Build produced from commit
19615363e3.
Unreleased (carried forward)
Install-InfisicalCertificatenow routes chain certificates by self-signed status instead of dumping every chain entry into the Intermediate Certification Authorities store. Self-signed roots are installed intoStoreName.Root(Trusted Root Certification Authorities) and non-self-signed intermediates are installed intoStoreName.CertificateAuthority(Intermediate Certification Authorities). The leaf continues to use the user-specified-StoreName/-StoreLocation(defaultMy/CurrentUser).Request-InfisicalCertificatealready routed chain certs correctly; the same routing helper is now shared by both cmdlets.InfisicalCertificateRequestHelpersexposes a new publicGetChainCertificateTargetStore(X509Certificate2)classifier and a newInstallChain(IEnumerable<X509Certificate2>, StoreLocation, bool, IInfisicalLogger, string)overload. The existingInstallChain(InfisicalSignedCertificate, ...)overload now delegates to the new collection-based overload, so PKI chain-installation routing is centralized in one place.
2026.06.04.1810
- Build produced from commit
19615363e3.
Unreleased (carried forward)
- Authored MAML help (
Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml) covering all 39 exported cmdlets. Every entry includes a synopsis, description, notes section, and two examples: a one-liner and anOrderedDictionarysplat (withOrdinalIgnoreCase) that includes precedingGet-resolver commands wherever IDs or slugs are required. build.ps1now stages the cmdlet help XML next to the deployed binary. After the publish step, every culture directory underModule/PSInfisicalAPI/(matchingxxorxx-XX) that containsPSInfisicalAPI.dll-Help.xmlis mirrored intobin/<culture>/. The script hard-fails ifbin/en-US/PSInfisicalAPI.dll-Help.xmlis missing or contains zero<command:command>entries.Test-ModuleImportsinbuild.ps1now dynamically enumerates exported cmdlets viaGet-Command -Module PSInfisicalAPI -CommandType Cmdlet, cross-checks the result against an expected list of 39 cmdlet names (including the previously-missingCopy-InfisicalSecret), and for each cmdlet asserts thatGet-Help -Fullreturns a non-empty synopsis (rejecting PowerShell's auto-generated cmdlet-name fallback), a non-empty description, and thatGet-Help -Examplesreturns at least one example node whose<dev:code>block is non-empty.
2026.06.04.1808
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1658
- Build produced from commit
19615363e3.
Unreleased (carried forward)
Request-InfisicalCertificatereuse path now falls back to the Infisical certificate-bundle endpoint when the local trust stores do not contain the issuing intermediates or root. The cmdlet builds the local chain first; if the result has no intermediates and no root, it fetchesGetCertificateBundle(serialNumber)and rebuilds the result with the bundle's chain PEM merged in. A new-LocalChainOnlyswitch opts out of the bundle fetch for strict offline behavior. Bundle-fetch failures are logged at verbose level and the cmdlet returns the local-only result.InfisicalCertificateRequestHelpers.BuildResultFromExistingLocaladds a second overload that accepts anInfisicalCertificateBundle; when supplied, chain certs from the bundle are deduplicated by thumbprint and merged with the locally-resolved chain before classification.
2026.06.04.1652
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1651
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1634
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1631
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1622
- Build produced from commit
19615363e3.
Unreleased (carried forward)
- PKI contract fixes and cmdlet expansion:
InfisicalPkiClientno longer auto-injectsconnection.ProjectIdinto PKI CA list/retrieve calls; only the caller's explicit-ProjectIdis forwarded so that cert-manager primary routes (which do not accept the query parameter) succeed.- List/single CA and single certificate response parsing now tolerate raw arrays, wrapper objects (
{certificate: {...}},{certificates: [...]}), and nestedconfigurationblocks.InfisicalCaMapperreads CA detail fields fromconfigurationfirst, falling back to top-level. RetrieveCertificate(connection, identifier)added onInfisicalPkiClient.
- New cmdlets:
Get-InfisicalCertificate— single-record retrieval by-SerialNumber/-Id(mandatory positional).Get-InfisicalCertificates— listing with light filtering (-CommonName,-FriendlyName,-Status,-CaId,-Limit,-Offset,-NoAutoPage). Auto-paginates by default.Request-InfisicalCertificate— generates a keypair locally (private key never leaves the device), submits a PKCS#10 CSR to eitherpki-subscribers/{name}/sign-certificate(-PkiSubscriberSlug) orca/{caId}/sign-certificate(-CertificateAuthorityId), and returns a singleInfisicalCertificateResultobject with the leaf and chain pre-classified. The result exposesLeaf : X509Certificate2,Intermediates : X509Certificate2[],Root : X509Certificate2(nullable),Chain : X509Certificate2[](ordered leaf → intermediates → root, deduplicated by thumbprint), plus pass-throughSerialNumber,CertificatePem,CertificateChainPem, andPrivateKeyPem. Supports-Subject(IDictionarywithCN/C/ST/L/O/OU/Ekeys) merged with individual-CommonName/-Country/etc. parameters (individual params win),-DnsName/-IpAddressSANs (auto-populated from local FQDN when omitted). Idempotency: scans the localX509Storefor an existing certificate matchingCNand an Infisical-known serial number; returns the existing certificate wrapped in anInfisicalCertificateResultwhoseIntermediates/Root/Chainare populated by walking the local trust stores viaX509Chain(no network calls, revocation checks disabled), and whoseCertificatePem/CertificateChainPemare reconstructed from the resolved certs. Reuse is short-circuited unless-Forceor-AllowRenewal(with optional-RenewalThresholdDays, default 30) requests a new one. Installation:-Installadds the leaf to-StoreName/-StoreLocation(defaultMy/CurrentUser);-InstallChainadditionally places intermediates intoCertificateAuthorityand self-signed roots intoRootfor the same-StoreLocation.-KeyStorageFlagsis passed through toX509Certificate2import.- Multi-algorithm CSR support on
Request-InfisicalCertificatevia split parameters:-KeyAlgorithm(Rsa/Ecdsa/Ed25519, defaultRsa),-KeySize(2048/3072/4096, default2048, applies to RSA only),-Curve(P256/P384, defaultP256, applies to ECDSA only). Signature algorithms are picked automatically: SHA256WITHRSA for RSA, SHA256WITHECDSA / SHA384WITHECDSA for ECDSA P-256/P-384, and Ed25519 (pure-EdDSA) for Ed25519. The underlyingInfisicalCsrBuilder.Build(subject, dns, ip, options)API was updated to take anInfisicalCsrOptionsobject in place of the priorkeySizeint. - Sign-certificate endpoint registrations:
SignCertificateBySubscriberandSignCertificateByCaregistered with both/api/v1/pki/...and/api/v1/cert-manager/...candidate paths and markedContainsSecretMaterialInResponse = true.
2026.06.04.1554
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1512
- Build produced from commit
19615363e3.
Unreleased (carried forward)
2026.06.04.1508
- Build produced from commit
19615363e3.
Unreleased (carried forward)
- CI  Gitea artifact upload fix: Replaced
actions/upload-artifact@v4andactions/download-artifact@v4with the Gitea-compatible forkschristopherhx/gitea-upload-artifact@v4andchristopherhx/gitea-download-artifact@v4in.gitea/workflows/publish-psgallery.yml. The upstream v4 actions abort on Gitea because Gitea is detected as GHES, which the upstream v4 actions do not support (see go-gitea/gitea#28853).
2026.06.04.0123
- Build produced from commit
2cbd5c2008.
Unreleased (carried forward)
- M10 polish  formatting, type metadata, and PKI route aliases:
- Added default table views and
DefaultDisplayPropertySetentries forInfisicalCertificateAuthority,InfisicalCertificate, andInfisicalCertificateBundlein the moduleFormat.ps1xml/Types.ps1xml. - Realigned PKI endpoint registry to current Infisical paths:
ListInternalCertificateAuthoritiesandRetrieveInternalCertificateAuthoritynow use/api/v1/cert-manager/ca/internal[/{caId}]as primary, with legacy/api/v1/pki/ca/internal[/{caId}]retained as a fallback alias.GetCertificateBundleandRetrieveCertificatesimilarly carrycert-managerfallback aliases. InfisicalApiInvoker.InvokeWithCandidateFallbackwalks the candidate list and falls back on404/405, used byInfisicalPkiClientso older self-hosted Infisical instances are tolerated transparently.
- Added default table views and
2026.06.04.0114
- Build produced from commit
2cbd5c2008.
Unreleased (carried forward)
- M10  PKI Internal CAs, Certificates & Windows Store integration:
Get-InfisicalCertificateAuthoritylists internal certificate authorities for the current project, or returns a single CA with-CaId.Search-InfisicalCertificatewrapsPOST /api/v1/projects/{projectId}/certificates/searchwith rich filters (-CommonName,-FriendlyName,-Search,-Status,-CaId,-ProfileId,-ApplicationId,-EnrollmentType,-KeyAlgorithm,-SignatureAlgorithm,-Source,-NotAfterFrom/To,-NotBeforeFrom/To,-SortBy/-SortOrder,-Limit/-Offset). Auto-paginates unless-NoAutoPageis set.ConvertTo-InfisicalCertificateaccepts anInfisicalCertificate,InfisicalCertificateBundle, or-SerialNumber, fetches the bundle endpoint when needed, and emits aSystem.Security.Cryptography.X509Certificates.X509Certificate2with the private key attached.-NoPrivateKeyskips key parsing;-IncludeChainadditionally emits intermediates;-KeyStorageFlagscontrols import behavior.Install-InfisicalCertificate/Uninstall-InfisicalCertificateperform idempotent installs/removes against a WindowsX509Store(-StoreName,-StoreLocation, defaultsMy/CurrentUser), matching by thumbprint. Install is a no-op when the thumbprint is already present unless-Forceis supplied (which replaces the existing entry). Both honorShouldProcessand accept pipeline input.Export-InfisicalCertificatewrites PEM, PFX, or CER to disk via-Format, with-Password(SecureString) for PFX,-IncludeChainfor full-chain PEM,-NoPrivateKeyto omit the key, and-Forceto overwrite.- BouncyCastle dependency: Added
BouncyCastle.Cryptographyto bridge PEM/PKCS#8 parsing on .NET Standard 2.0 / Windows PowerShell 5.1 (whereX509Certificate2.CreateFromPemandRSA.ImportFromPemare unavailable). The sharedPemCertificateBuilderassembles cert + chain + key into an in-memory PKCS#12 blob and imports it back intoX509Certificate2. The DLL ships in the published module bin directory. - PKI endpoint registry entries for
ListInternalCertificateAuthorities(GET /api/v1/pki/ca/internal),RetrieveInternalCertificateAuthority(GET /api/v1/pki/ca/internal/{caId}),SearchCertificates(POST /api/v1/projects/{projectId}/certificates/search),RetrieveCertificate, andGetCertificateBundle(GET /api/v1/pki/certificates/{serialNumber}/bundle).
2026.06.04.0020
- Build produced from commit
211fbcf34d.
Unreleased (carried forward)
2026.06.04.0005
- Build produced from commit
e0a6ef02df.
Unreleased (carried forward)
- Bulk v4 batch routes: Endpoint registry now registers
POST|PATCH|DELETE /api/v4/secrets/batchas the preferred candidates forBulkCreateSecret/BulkUpdateSecret/BulkDeleteSecret; the existing v3 raw routes (/api/v3/secrets/batch/raw) remain as automatic fallback. Batch request DTOs serialize bothprojectId(required by v4) andworkspaceId(accepted by v3) when populated. - Strongly-typed bulk input:
-SecretsonNew-InfisicalSecretandUpdate-InfisicalSecretis nowIDictionary<string, string>[]instead ofHashtable[].InfisicalBulkSecretConverteracceptsIEnumerable<IDictionary<string, string>>and parsesTagIdsfrom a comma-separated string. NestedMetadata/SecretMetadatadictionaries are no longer accepted in the bulk hashtable surface (setSecretMetadataprogrammatically onInfisicalBulkCreateSecretItem/InfisicalBulkUpdateSecretItemif needed).
2026.06.03.2207
- Build produced from commit
09c3d5c68b. - M9  Bulk, Duplicate & Inheritance:
- Bulk parameter sets added to
New-InfisicalSecret,Update-InfisicalSecret, andRemove-InfisicalSecretaccepting-Secrets Hashtable[]; client methodsCreateBatch/UpdateBatch/DeleteBatchwrapPOST|PATCH|DELETE /api/v3/secrets/batch/raw. Copy-InfisicalSecretcmdlet added, wrappingPOST /api/v4/secrets/duplicatewith source/destination environment + path parameters and per-attribute copy toggles.- Connection inheritance centralized in
InfisicalCmdletBase(ResolveProjectId/ResolveEnvironment/ResolveSecretPath/ResolveApiVersion/ResolveOrganizationId). Explicit parameters always win; missing values fall back to the active connection and emit a-Verboseline. - Project/Environment/Folder/Tag and all secret cmdlets refactored to use the inheritance helpers; existing explicit-parameter behavior is preserved.
InfisicalBulkSecretConverteraccepts flexible key aliases (SecretName/Name/Key,SecretValue/Value,SecretComment/Comment,Metadata/SecretMetadata).- Test count: 161 (up from 139). Added coverage for bulk DTO shapes, the converter, the duplicate request DTO, registry entries for the four new endpoints, and the resolution helpers.
- Bulk parameter sets added to
Unreleased (carried forward)
2026.06.03.2206
- Build produced from commit
09c3d5c68b.
Unreleased (carried forward)
2026.06.03.2136
- Build produced from commit
d9822aab7a. - Resource CRUD expansion: Added full Get/New/Update/Remove cmdlet families for Projects, Environments, Folders, and Tags (20 new cmdlets):
- Projects:
Get-InfisicalProjects,Get-InfisicalProject,New-InfisicalProject,Update-InfisicalProject,Remove-InfisicalProject. - Environments:
Get-InfisicalEnvironments,Get-InfisicalEnvironment,New-InfisicalEnvironment,Update-InfisicalEnvironment,Remove-InfisicalEnvironment. - Folders:
Get-InfisicalFolders,Get-InfisicalFolder,New-InfisicalFolder,Update-InfisicalFolder,Remove-InfisicalFolder. - Tags:
Get-InfisicalTags,Get-InfisicalTag,New-InfisicalTag,Update-InfisicalTag,Remove-InfisicalTag.
- Projects:
- Secret mutation cmdlets: Added
New-InfisicalSecret,Update-InfisicalSecret, andRemove-InfisicalSecret; extendedInfisicalSecretsClientwith corresponding create/update/delete operations. - Additional auth providers:
Connect-Infisicalnow supports JWT (-Jwt -IdentityId), OIDC (-Jwt -IdentityId), LDAP (-Username -Password), Azure (-Jwt -IdentityId), and GCP IAM (-Jwt -IdentityId) via dedicated parameter sets. Common identity-login flow is centralized inIdentityLoginExecutor. - Endpoint registry expanded with login routes (
/api/v1/auth/{jwt|oidc|ldap|azure|gcp}-auth/login) and CRUD routes for projects (v2), environments, folders, tags, and secret mutations. - Test suite expanded to 139 passing tests, including mapper round-trips for projects/environments/folders/tags, secret mutation DTO shapes, and request-body validation for each new auth provider.
2026.06.03.0131
- Build produced from commit
7be0b7b420. - Behavior change:
Get-InfisicalSecretsandGet-InfisicalSecretnow default-ViewSecretValueto$true. Real secret values are returned by default. To request the redacted/hidden response, pass-ViewSecretValue:$false. InfisicalSecretMappernow treats the server-side<hidden-by-infisical>placeholder as a hidden marker rather than a value: whensecretValueHidden=true(or the placeholder string is detected)SecretValueis set tonullinstead of stuffing the literal into aSecureString. This prevents downstream consumers (auth, exports, dictionary conversion) from silently using<hidden-by-infisical>as if it were a real secret.
Unreleased (carried forward)
2026.06.03.0113
- Build produced from commit
09c577ebd0. - Added
InfisicalSecret.GetPlainTextValue()for direct plain-text access to secret material from PowerShell without needingMarshal.SecureStringToBSTR. - Added
-AsPlainTextswitch toConvertTo-InfisicalSecretDictionary; when present the cmdlet emitsDictionary<string, string>instead of the defaultDictionary<string, SecureString>.
Unreleased (carried forward)
2026.06.03.0057
- Build produced from commit
7e5209190a.
Unreleased (carried forward)
2026.06.03.0056
- Build produced from commit
7e5209190a.
Unreleased (carried forward)
2026.06.03.0055
- Build produced from commit
7e5209190a.
Unreleased (carried forward)
2026.06.03.0047
- Build produced from commit
7e5209190a.
Unreleased (carried forward)
2026.06.03.0046
- Build produced from commit
7e5209190a.
Unreleased (carried forward)
2026.06.03.0032
- Build produced from commit
c866760105.
Unreleased (carried forward)
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1648
- Build produced from commit
430e3a00c9.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1638
- Build produced from commit
3c47d6ff30.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1648
- Build produced from commit
430e3a00c9.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1611
- Build produced from commit
3c47d6ff30.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1648
- Build produced from commit
430e3a00c9.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1638
- Build produced from commit
3c47d6ff30.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward)
2026.06.02.1648
- Build produced from commit
430e3a00c9.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward)
2026.06.02.1724
- Build produced from commit
5801b4774a.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward)
2026.06.02.1737
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward)
2026.06.02.1902
- Build produced from commit
fa65c18bc1.
Unreleased
2026.06.02.1907
- Build produced from commit
fa65c18bc1.
Unreleased (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward) (carried forward)
Added
- Initial repository skeleton, C#
netstandard2.0project, and PowerShell module layout. - Centralized logging (
InfisicalLogger), error types/handler, sanitizer, path utility, andSecureStringutility. - Endpoint registry covering
UniversalAuthLogin,ListSecrets, andRetrieveSecret, and aSystem.Uri-based URI builder. - Synchronous HTTP client, JSON/YAML/XML/ENV serializers, and DTO/mapper for secrets.
- Connection model, process-level session manager, Universal Auth and Token Auth providers.
- Cmdlets:
Connect-Infisical,Disconnect-Infisical,Get-InfisicalSecrets,Get-InfisicalSecret,ConvertTo-InfisicalSecretDictionary,Export-InfisicalSecrets. - Build script (
build.ps1) generating manifest, copying binaries, creating release folders, and supporting unit/integration tests. - xUnit test project with unit tests and opt-in integration tests.