Disable Terminal Pagers During Caret Sessions
Many CLI tools (like Git) use a pager such as less for interactive, scrollable output. When Caret runs commands in your terminal, that interactivity gets in the way — the pager can pause on the first page and block progress. You can configure your shell so that when a terminal is spawned by Caret, pagers are disabled and output streams through normally.
How it works
Caret sets an environment variable for terminals it opens to run commands:
CLINE_ACTIVE— non-empty when the shell is running under Caret
You can detect this variable in your shell startup file and adjust environment variables or aliases only for Caret-run sessions. This keeps your normal interactive terminals unchanged.
Quick setup (Zsh/Bash)
Add the following to your ~/.zshrc, ~/.bashrc, or ~/.bash_profile:
# Disable pagers when the terminal is launched by Caret
if [[ -n "$CLINE_ACTIVE" ]]; then
export PAGER=cat
export GIT_PAGER=cat
export SYSTEMD_PAGER=cat
export LESS="-FRX"
fi
Note
PAGER=catensures generic pager-aware tools print directly to stdoutGIT_PAGER=catprevents Git from invokinglessSYSTEMD_PAGER=catdisables paging in systemd tools (if present)LESS="-FRX"makeslessbehave more like streaming output if a tool still calls it
This configuration only applies when CLINE_ACTIVE is set, so your normal terminals keep their usual interactive behavior.
Verify
- Open a task in Caret that runs terminal commands and check:
echo "$CLINE_ACTIVE"prints a non-empty valuegit logor other long outputs should stream without pausing
- If changes don't take effect:
- Make sure you updated the correct startup file for your shell
- Restart VS Code/Cursor so integrated terminals reload your shell config
- Confirm your terminal profile sources your
~/.zshrcor~/.bashrc
Optional tweaks
- Prefer command-line options when you don't want to rely on env vars:
# One-off usage (no aliases)
git --no-pager log -n 50 --decorate --oneline
systemctl --no-pager status nginx
journalctl --no-pager -u nginx -n 200
less -FRX README.md
- You can also override paging via shell aliases scoped to Caret sessions using options rather than env vars:
if [[ -n "$CLINE_ACTIVE" ]]; then
# Make 'less' non-interactive by default
alias less='less -FRX'
# Disable paging for common tools via CLI flags
alias git='command git --no-pager'
alias systemctl='command systemctl --no-pager'
alias journalctl='command journalctl --no-pager'
fi
-
If you prefer environment variables, many CLIs also respect a generic or tool-specific pager variable:
- Git:
GIT_PAGER=cat - Systemd:
SYSTEMD_PAGER=cat - Man pages:
MANPAGER=cat(not typically needed for Caret-driven commands)
- Git:
-
Aliases affect the current interactive shell, while environment variables propagate to child processes. Choose the approach that best fits your workflow.