Validate Plugin Configuration
Use this guide when you have a plugin kind and need predictable diagnostics before the plugin installs runtime behavior.
What You Build
You will define a JSON-compatible component config, validate required fields and supported values, return structured diagnostics, and confirm that disabled components still report config problems before rollout.
Configuration Shape
The canonical plugin configuration is a top-level document with version, components, and policy.
Each component has:
kind: the plugin kind to activate.enabled: whether the component should initialize.config: the component-local JSON object passed to validation and registration.
Disabled components are still validated. This lets operators detect config problems before enabling a component in a later rollout.
Python
Node.js
Rust
Validation Rules
Validation should be deterministic and side-effect free. It should inspect config and return diagnostics; it should not register middleware, open network connections, create clients, or mutate process state.
Validate these areas first:
- Required fields are present.
- Field types match the supported shape.
- Unknown fields follow the configured policy.
- Known fields have supported values.
- Cross-field combinations make sense.
- Sensitive values are references or secret names, not raw credentials.
Use warnings when a config can still activate but deserves operator attention. Use errors when initialization should not proceed.
Diagnostic Shape
Diagnostics should be actionable and stable enough for tests or deployment automation:
Prefer stable diagnostic codes over prose-only messages. The message can improve over time; the code should remain testable.
Validate Before Initialization
Use the validation API before initialization and fail deployment if the report contains errors.
Python
Node.js
Rust
Validation Checklist
Before sharing a plugin config contract:
- Validate the smallest correct config.
- Validate a config with each required field missing.
- Validate unsupported enum or mode values.
- Validate unknown fields under each supported policy.
- Validate disabled components with invalid config.
- Confirm diagnostics identify the component and field that needs action.
Common Issues
Check these symptoms first when the workflow does not behave as expected.
- Config contains callables or client objects: Keep config JSON-compatible and instantiate objects inside plugin code.
- Disabled components skip validation: Disabled components should still report config problems.
- Diagnostics are hard to automate: Add stable codes and field names.
- Validation opens network connections: Move runtime setup into plugin registration.
Next Steps
Use these links to continue from this workflow into the next related task.
- Register runtime behavior with Register Plugin Behavior.
- Add rollout controls with Design Plugin Configuration.
- Review concrete validation patterns in Code Examples.