Securitywarn by defaultrecommended preset
astro-doctor/require-action-input-schemarequire-action-input-schema
Validate untrusted Astro Action input before the handler runs.
Why
Astro Actions are public endpoints. An input schema rejects malformed or unexpected request data before it reaches application logic and gives the handler typed input.
Examples
Incorrect
Handler consumes input without validation
export const server = {
createUser: defineAction({
handler: async (input) => createUser(input),
}),
}Correct
Validate input with a schema
import { z } from 'astro:schema'
export const server = {
createUser: defineAction({
input: z.object({
email: z.string().email(),
}),
handler: async ({ email }) => createUser({ email }),
}),
}Configuration
Project audits are configured in doctor.config.ts:
export default {
rules: {
'astro-doctor/require-action-input-schema': 'error', // or 'warn' or 'off'
},
}All rules
astro-doctor/no-client-load-overuseastro-doctor/use-astro-imageastro-doctor/require-image-dimensionsastro-doctor/no-missing-altastro-doctor/no-set-htmlastro-doctor/no-public-secret-envastro-doctor/prefer-class-listastro-doctor/no-blocking-scriptastro-doctor/no-unprocessed-script-surprisesastro-doctor/no-missing-langastro-doctor/require-island-fallbackastro-doctor/no-process-envastro-doctor/prefer-content-collectionsastro-doctor/no-disabled-origin-checkastro-doctor/no-insecure-session-cookieastro-doctor/no-open-allowed-domainsastro-doctor/prefer-env-schemaastro-doctor/prefer-pnpmastro-doctor/require-action-input-schema(this page)astro-doctor/require-client-router-script-lifecycleastro-doctor/require-content-config