Environment variables

Every DEVFLOW_ variable, what it changes, and the Claude Code variables worth leaving alone.

Escape hatches

Prefer one-off use over exporting. An exported escape hatch is a removed gate.

DEVFLOW_ALLOW_RAW_COMMIT=1 git commit -m "..."
VariableEffect
DEVFLOW_ALLOW_RAW_COMMIT=1Allow raw git commit, bypassing gate-commits
DEVFLOW_SKIP_EDIT_GATE=1Disable gate-edits entirely
DEVFLOW_SKIP_CHANGELOG_GATE=1Allow git tag -a without a changelog entry
DEVFLOW_SKIP_PROGRESS_GUARD=1Disable the repeated-call guard
DEVFLOW_SKIP_INTERACTIVE_GATE=1Disable interactive-command interception

Session behaviour

VariableEffect
DEVFLOW_SKIP_CLASSIFY=1Skip session classification and the routing preamble
DEVFLOW_SKIP_AWARENESS_POPULATE=1Skip the background awareness cache warm
DEVFLOW_SKIP_ORG_CONTEXT=1Skip org-context injection at planning time
DEVFLOW_SKIP_HANDOFF_INJECT=1Skip handoff result injection
DEVFLOW_SKIP_HANDOFF_RESULTS=1Skip handoff result routing

Paths and overrides

VariableEffect
DEVFLOW_HOMEOverride the runtime mirror location (default ~/.claude/devflow)
DEVFLOW_AUDIT_LOG_PATHWhere the Stop-hook audit log is written
DEVFLOW_MODEL_PROFILEForce a model profile for the session
DEVFLOW_OWNEDMarks a path as DevFlow-managed

Handoff daemon

VariableEffect
DEVFLOW_HANDOFF_PID_FILEOverride the daemon PID file location
DEVFLOW_WATCH_ALLOW_FILEPath to a custom allowlist
DEVFLOW_HANDOFF_RESULT_TTL_MSHow long an unconsumed result stays valid

Deprecated

VariableStatus
DEVFLOW_STRICT_EDITS=1No longer needed — strict is the default. Use gates.editGate to relax it.

Claude Code variables

Two are worth an explicit position, because tuning them looks helpful and is not.

Leave these alone

MAX_MCP_OUTPUT_TOKENS (25K, warns at 10K) and BASH_MAX_OUTPUT_LENGTH (50K) are not binding. The largest single tool result measured across ~93M tokens of transcripts was 26K, and p99 is around 6K. Tightening them buys no context and breaks legitimate large results.

ENABLE_TOOL_SEARCH should stay on its default so MCP tool schemas remain deferred and out of the window.

The lever on context is behaviour, not configuration — see context discipline.