Date: 2026-03-08 Branch: fix/artisan-interactive-commands
Laravel artisan commands like tinker, reverb:start, queue:work, and horizon don't work in the web terminal because:
allowAllCommands mode enables interactive execution but disables the entire security whitelistAdd allowInteractiveMode boolean that decouples interactive execution from the allowAllCommands security bypass.
WebTerminal.php: New $allowInteractiveMode propertyWebTerminal.php: Update shouldUseInteractiveMode() to check both flagsTerminalBuilder.php: New allowInteractiveMode() builder methodUser enters command
→ Validate against whitelist (unchanged)
→ Sanitize input (unchanged)
→ Rate limit check (unchanged)
→ shouldUseInteractiveMode()?
YES if allowAllCommands=true OR allowInteractiveMode=true
→ Start interactive session (tmux/process)
→ Stream output, accept stdin
NO → Execute synchronously (existing behavior)
Terminal::local()
->allowedCommands(['php *', 'node *', 'npm *'])
->allowAllShellOperators()
->allowInteractiveMode()
->render();
How can I help you explore Laravel packages today?