{"record":{"id":"e1e86fad30f110be","repo":"microsoft/aspire","slug":"secret-name-cannot-be-longer-than-127-characters","errorCode":null,"errorMessage":"Secret name cannot be longer than 127 characters.","messagePattern":"Secret name cannot be longer than 127 characters\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs","lineNumber":391,"sourceCode":"    public static IResourceBuilder<AzureKeyVaultSecretResource> AddSecret(this IResourceBuilder<AzureKeyVaultResource> builder, [ResourceName] string name, string secretName, ReferenceExpression value)\n    {\n        ArgumentNullException.ThrowIfNull(builder);\n        ArgumentNullException.ThrowIfNull(value);\n\n        ValidateSecretName(secretName);\n\n        var secret = new AzureKeyVaultSecretResource(name, secretName, builder.Resource, value);\n        builder.Resource.Secrets.Add(secret);\n\n        return builder.ApplicationBuilder.AddResource(secret).WithIconName(\"LockClosed\").ExcludeFromManifest();\n    }\n\n    private static void ValidateSecretName(string secretName)\n    {\n        // Azure Key Vault secret names must be 1-127 characters long and contain only ASCII letters (a-z, A-Z), digits (0-9), and dashes (-)\n        if (secretName.Length > 127)\n        {\n            throw new ArgumentException(\"Secret name cannot be longer than 127 characters.\", nameof(secretName));\n        }\n\n        if (!AzureKeyVaultSecretNameRegex().IsMatch(secretName))\n        {\n            throw new ArgumentException(\"Secret name can only contain ASCII letters (a-z, A-Z), digits (0-9), and dashes (-).\", nameof(secretName));\n        }\n    }\n\n    [GeneratedRegex(\"^[a-zA-Z0-9-]+$\")]\n    private static partial Regex AzureKeyVaultSecretNameRegex();\n}\n","sourceCodeStart":373,"sourceCodeEnd":403,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs#L373-L403","documentation":"Azure Key Vault limits secret names to 127 characters. ValidateSecretName enforces this before any resource is added, throwing ArgumentException with the parameter name 'secretName' when the name exceeds the limit.","triggerScenarios":"Calling AddSecret (or the secret-adding extensions that route through ValidateSecretName) with a secretName string longer than 127 characters.","commonSituations":"Auto-generated secret names built from long prefixes plus resource/parameter names, environment-specific prefixes concatenated together, or machine-generated identifiers.","solutions":["Shorten the secret name to 127 characters or fewer.","Trim or abbreviate the prefix/convention that produces the name (e.g. use short env codes like 'dev' instead of 'development').","Add a name-validation step in your AppHost that asserts names fit the Azure limit before calling AddSecret."],"exampleFix":"// before\nkv.AddSecret($\"{environment}-{application}-{resource}-connection-string\");\n\n// after\nvar secretName = $\"{envCode}-{appCode}-{resCode}-cs\"; // kept under 127 chars\nkv.AddSecret(secretName, ...);","handlingStrategy":"validation","validationCode":"if (secretName.Length > 127)\n{\n    throw new ArgumentException($\"Secret name '{secretName}' exceeds the 127-character Azure Key Vault limit.\");\n}","typeGuard":null,"tryCatchPattern":"try { kv.AddSecret(secretName, ...); }\ncatch (ArgumentException ex) when (ex.ParamName == \"secretName\") { /* shorten the name and retry */ }","preventionTips":["Keep naming conventions short; budget prefix length against the 127-character limit.","Truncate generated names deterministically before calling AddSecret.","Add a startup assertion validating all planned secret names."],"tags":["azure","key-vault","naming","validation"],"backgroundTag":"value-out-of-range","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T09:17:21.228Z"}