# rpc error: code = InvalidArgument desc = invalid field: name: value is empty, must be a non-empty string

- **ID:** `go/grpc-invalid-argument-missing-field`
- **Domain:** go
- **Category:** type_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

The client sent a protobuf message with a required field left empty or invalid, violating server-side validation rules.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.22 | active | — | — |
| 1.23 | active | — | — |

## Workarounds

1. **Validate all required fields before sending the RPC.** (95% success)
   ```
   if req.Name == "" { return errors.New("name must not be empty") }
resp, err := client.CreateUser(ctx, req)
   ```
2. **Use protovalidate library to enforce constraints client-side.** (90% success)
   ```
   import "github.com/bufbuild/protovalidate-go"
validator, _ := protovalidate.New()
if err := validator.Validate(req); err != nil { return err }
   ```

## Dead Ends

- **Ignoring the error and resending the same message.** — The message is still invalid; error will repeat. (100% fail)
- **Setting the field to a random non-empty string without understanding the requirement.** — May cause data corruption or further validation errors. (80% fail)
