pulumi/pulumi · error
unrecognized signature '%v' in property map
Error message
unrecognized signature '%v' in property map
What it means
While decoding a serialized property value object map, the 'sig' (signature) field did not match any known signature constant (secret, resource reference, array, etc.), so the decoder cannot determine how to interpret the object. The offending signature value is included in the message.
Source
Thrown at pkg/resource/stack/deployment.go:1190
return resource.PropertyValue{},
fmt.Errorf("malformed byte string: unable to parse 'value' field: %w", err)
}
return resource.NewProperty(string(decoded)), nil
case floatSignature:
hex, ok := objmap["value"].(string)
if !ok {
return resource.PropertyValue{},
errors.New("malformed float value: missing or non-string 'value' field")
}
bits, err := strconv.ParseUint(hex, 16, 64)
if err != nil {
return resource.PropertyValue{},
fmt.Errorf("malformed float value: unable to parse 'value' field: %w", err)
}
floatVal := math.Float64frombits(bits)
return resource.NewProperty(floatVal), nil
default:
return resource.PropertyValue{}, fmt.Errorf("unrecognized signature '%v' in property map", sig)
}
}
// Otherwise, it's just a weakly typed object map.
return resource.NewProperty(obj), nil
case *apitype.SecretV1:
return deserializeSecret(ctx, w, dec)
default:
contract.Failf("Unrecognized property type %T: %v", v, reflect.ValueOf(v))
}
}
return resource.NewNullProperty(), nil
}
func secretPropertyValueFromPlaintext(plaintext string) (resource.PropertyValue, error) {
var elem any
if err := json.Unmarshal([]byte(plaintext), &elem); err != nil {View on GitHub (pinned to 793f7b2e16)
Solutions
- Update the Pulumi CLI to the latest version and retry
- Identify the signature value from the message and compare against the constants in the repo (property signature codes)
- Restore state from a backup created by a compatible CLI version
Defensive patterns
Strategy: type-guard
Validate before calling
switch sig := sig; {
case sig == secretSignature, sig == resourceSignature, sig == secretOutputSignature:
// known
default:
return fmt.Errorf("unsupported sig %v — upgrade CLI", sig)
} Type guard
func knownSignature(sig uint32) bool {
switch sig {
case secretSignature, resourceSignature, secretOutputSignature:
return true
}
return false
} Prevention
- Use the same or newer Pulumi CLI version that produced the deployment
- Pin CLI versions in CI to match the team's version
- Subscribe to Pulumi release notes when serialization formats change
When it happens
Trigger: Deserializing a deployment/checkpoint whose property values contain a 'sig' number unknown to the current CLI — typically produced by a NEWER Pulumi version with additional signatures.
Common situations: Using an older Pulumi CLI against stack state or deployments written by a newer CLI; third-party tooling inventing signature values.
Related errors
- failed to serialize snapshot: %w
- failed to convert outputs to JSON: %w
- marshaling inputs: %w
- marshaling outputs: %w
- failed to marshal %s return state: %w
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/09624c2ae00073a4.
Report an issue: GitHub.