The default extra setting is "ignore", so a model constructed from a payload containing keys it does not declare accepts the input and silently discards those keys. A typo in a config file or a renamed API field therefore validates cleanly and leaves the corresponding attribute at its default.
This is the failure mode behind a whole class of configuration bugs: the value is set in the file, the model reports no error, and the application uses the default anyway. Confirm it by constructing a model with a deliberately misspelled key and checking that no error is raised.
Set model_config = ConfigDict(extra="forbid") on anything parsing input you control, which raises Extra inputs are not permitted naming the offending key. Use extra="allow" only when you intend to keep unknown fields; they are stored in model_extra and included in model_dump(). For settings classes the forbid setting is almost always right, since an unrecognised environment variable prefix is far more often a mistake than an intentional extension.