Implements three wizard UX gaps identified in issue #426: AC-3: Replace plaintext password prompt in bootstrapFirstUser with a masked reader (promptMasked) that suppresses echo and requires the user to type their password twice to confirm. Min-8-chars validation is preserved and applied after both entries agree. AC-4: Add a hooks-preview stage (hooksPreviewStage) between runtimeSetupStage and skillsSelectStage in the wizard. The stage parses hooks-config.json, displays each hook event/matcher/command, and prompts the user for consent before installation. Declined → state recorded with accepted=false. Also adds `mosaic config hooks list|enable| disable` subcommands to manage installed hooks in ~/.claude/ post-install. AC-5: Add headless install path to runConfigWizard and bootstrapFirstUser gated on MOSAIC_ASSUME_YES=1 or !process.stdin.isTTY. Env-var-driven configuration with required-var validation and non-zero exit on missing or invalid inputs. Documents all env vars in packages/mosaic/README.md. Closes #426 Co-Authored-By: Claude Sonnet 4.6 <[email protected]>