ci/hooks/ERROR_MESSAGES.md
This document shows the exact error messages displayed when forbidden commands are blocked by the pre-command hook.
All error messages now include three parts:
| Command | Error Message |
|---|---|
ninja | ninja is forbidden - use 'bash test' instead (FastLED build system handles ninja invocation). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 ninja ... |
meson | meson is forbidden - use 'bash test' instead (FastLED build system handles meson configuration). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 meson ... |
clang | clang is forbidden - use 'bash test' instead (build system uses clang-tool-chain internally). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 clang ... |
clang++ | clang++ is forbidden - use 'bash test' instead (build system uses clang-tool-chain internally). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 clang++ ... |
gcc | gcc is forbidden - GCC is NOT SUPPORTED by FastLED - project requires Clang 21.1.5. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 gcc ... |
g++ | g++ is forbidden - G++ is NOT SUPPORTED by FastLED - project requires Clang 21.1.5. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 g++ ... |
gdb | gdb is forbidden - use 'clang-tool-chain-lldb' instead (FastLED's LLDB wrapper). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 gdb ... |
lldb | lldb is forbidden - use 'clang-tool-chain-lldb' instead (FastLED's LLDB wrapper). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 lldb ... |
pio | pio is forbidden - use 'bash compile', 'bash debug', or 'bash validate' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 pio ... |
platformio | platformio is forbidden - use 'bash compile', 'bash debug', or 'bash validate' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 platformio ... |
| Pattern | Error Message |
|---|---|
rm -rf .build* | rm -rf .build is forbidden - use 'bash test --clean' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 rm ... |
rm -rf .fbuild | rm -rf .fbuild is forbidden - use 'bash compile --clean' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 rm ... |
--no-fingerprint | --no-fingerprint is forbidden - makes builds 10-100x slower, use 'bash test --clean' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 ... |
uv run python test.py | uv run python test.py is forbidden - use 'bash test' or 'uv run test.py' instead. To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 ... |
| Environment Variable | Error Message |
|---|---|
ZCCACHE_DISABLE=1 | Setting ZCCACHE_DISABLE is forbidden (disables critical performance optimization). To override this check, use: FL_AGENT_ALLOW_ALL_CMDS=1 ZCCACHE_DISABLE=1 ... |
bash testninja → Use bash testmeson → Use bash testbash testclang → Use bash testclang++ → Use bash testgcc → ❌ NOT SUPPORTED - FastLED requires Clang 21.1.5g++ → ❌ NOT SUPPORTED - FastLED requires Clang 21.1.5clang-tool-chain-lldbgdb → Use clang-tool-chain-lldblldb → Use clang-tool-chain-lldbbash compile / bash debug / bash validatepio → Use bash compile, bash debug, or bash validateplatformio → Use bash compile, bash debug, or bash validate--clean flagsrm -rf .build → Use bash test --cleanrm -rf .fbuild → Use bash compile --clean--no-fingerprint → Use bash test --clean (fingerprint cache is reliable)ZCCACHE_DISABLE=1 → Never disable zccache (critical performance optimization)All forbidden commands can be bypassed using the FL_AGENT_ALLOW_ALL_CMDS=1 environment variable:
Option 1: Set in command (recommended for AI agents):
FL_AGENT_ALLOW_ALL_CMDS=1 ninja --version
FL_AGENT_ALLOW_ALL_CMDS=1 rm -rf .build/meson-quick
FL_AGENT_ALLOW_ALL_CMDS=1 clang++ test.cpp -o test.exe
Option 2: Set in shell environment (for multiple commands):
export FL_AGENT_ALLOW_ALL_CMDS=1
ninja --version
clang++ test.cpp -o test.exe
How it works:
VAR=value command)FL_AGENT_ALLOW_ALL_CMDS=1 is found in the command, it's allowed⚠️ Warning: Only use the override when you have a specific, documented reason to bypass the hook.