SSD Nodes Learn Hosting plans →
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-30

VPSలో Claude Code statusline ఎలా సెటప్ చేయాలి

statusLine script stdout ను prompt కింద చూపిస్తుంది. hostname, directory, git branch, model వివరాలతో సరైన serverలోనే పని చేస్తున్నారో వెంటనే తెలుసుకోండి.

Claude Code statusline ఏమి చూపిస్తుంది

Claude Code statusline అనేది prompt కింద కనిపించే ఒక వరుస. మీరు వ్రాసే script యొక్క output ను ఇది చూపిస్తుంది. statusLine block ను settings.json కు జోడించి, దాన్ని ఒక command కు అనుసంధానించాలి. Claude Code ఆ command ను అమలు చేసి, session state ను JSON రూపంలో standard input ద్వారా దానికి పంపుతుంది. ఆ command standard output కు రాసినదాన్ని statusline చూపిస్తుంది.

ఇదే మొత్తం contract. మీ script stdin నుంచి JSON ను చదివి, stdout కు text ను రాస్తుంది. ఇది మీ machine పై నడుస్తుంది. ఇది రాసే ఏదీ model కు పంపబడదు. అందువల్ల దీనికి tokens ఖర్చు కావు.

ఒక project ఉన్న laptop లో ఇది కేవలం అలంకరణ. మూడు servers ఉన్నప్పుడు ఇది safety rail లా పనిచేస్తుంది. ప్రతి terminal లోని ప్రతి Claude Code session ఒకేలా కనిపిస్తుంది. కాబట్టి labels లేని నాలుగు SSH windows ఉంటే migration ను తప్పు server పై అమలు చేసే అవకాశం ఉంటుంది. hostname తో ప్రారంభమయ్యే statusline ఈ రకమైన తప్పును నివారిస్తుంది.

settings.jsonలో statusLine సెట్టింగ్ ఎక్కడ ఉంటుంది

దాన్ని మీ user settingsలో ~/.claude/settings.json వద్ద ఉంచండి. ఇది ఆ మెషీన్‌లోని ప్రతి projectకు వర్తిస్తుంది. Repositoryలోని .claude/settings.json వద్ద ఉన్న project settings కూడా పనిచేస్తాయి. ఆ directoryకి అవే ప్రాధాన్యం పొందుతాయి.

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh"
  }
}

type ఎల్లప్పుడూ "command" గా ఉంటుంది. command విలువ shell ద్వారా అమలవుతుంది. అందువల్ల ఇది script path లేదా సాధారణ command కావచ్చు. ఏ script రాయడానికి ముందుగా ఈ wiring పనిచేస్తోందని నిర్ధారించండి:

{
  "statusLine": {
    "type": "command",
    "command": "hostname -s"
  }
}

Claude Code ప్రారంభించి ఒక message పంపండి. ఇప్పుడు prompt కింద ఉన్న barలో server యొక్క short hostname కనిపిస్తుంది. అది ఖాళీగానే ఉంటే, సమస్య మీ scriptలో కాదు; setting లేదా trust dialogలో ఉంది. దిగువన ఉన్న "statusline ఖాళీగా ఎందుకు ఉంటుంది" విభాగాన్ని చదవండి.

August 2026 నాటికి మూడు optional keys ఉన్నాయి. padding అక్షరాల్లో horizontal spacingను జోడిస్తుంది. దీని default విలువ 0. refreshInterval సాధారణ triggersతో పాటు ప్రతి N secondsకు commandను మళ్లీ అమలు చేస్తుంది. దీని కనిష్ఠ విలువ 1. Session idleగా ఉన్నప్పుడు lineలో clock లేదా మారుతూ ఉండే సమాచారం చూపించాల్సిన సందర్భాల్లో మాత్రమే దీన్ని ఉపయోగించండి. మీ script ఇప్పటికే vim modeను render చేస్తే, అంతర్నిర్మిత -- INSERT -- textను hideVimModeIndicator దాచేస్తుంది.

statusline script కు ఏ డేటా అందుతుంది?

ఈ పేజీతో సహా ఎక్కడైనా చదివిన field జాబితాను నమ్మవద్దు. మీ version పంపే నిజమైన object ను capture చేయండి. stdin ను ఫైల్‌లో సేవ్ చేసే తాత్కాలిక script రాయండి:

cat > ~/.claude/statusline-capture.sh <<'EOF'
#!/bin/bash
cat > /tmp/statusline-input.json
echo "captured"
EOF
chmod +x ~/.claude/statusline-capture.sh

statusLine.command ను ఆ ఫైల్‌కు చూపించి, ఒక session ప్రారంభించి, ఒక message పంపండి. bar captured ను చదువుతుంది. ఇప్పుడు వచ్చిన డేటాను చూడండి:

jq . /tmp/statusline-input.json

మీ build కు సరైన ఖచ్చితమైన నిర్మాణం మీ వద్ద ఉంటుంది. Update తర్వాత ఏదైనా మారితే ఇదే విధానాన్ని మళ్లీ ఉపయోగించవచ్చు.

August 2026 నాటి documentation ప్రకారం స్థిరంగా ఉండే భాగాలు flat keys కాకుండా nested objects. model లో id మరియు display_name ఉంటాయి. workspace లో current_dir మరియు project_dir ఉంటాయి: ప్రస్తుత session ఉన్న స్థానం current_dir, session ప్రారంభమైన స్థానం project_dir. Session మధ్యలో working directory మారినప్పుడు ఈ రెండు విలువలు వేర్వేరుగా ఉంటాయి. Top-level cwd లో workspace.current_dir తో సమానమైన విలువ ఉంటుంది. context_window లో token counts తో పాటు ముందే లెక్కించిన used_percentage ఉంటుంది. cost లో total_cost_usd మరియు duration counters ఉంటాయి. Session మొత్తం కాలానికి session_id స్థిరంగా ఉంటుంది. Sessions మధ్య ఇది unique గా ఉంటుంది, కాబట్టి తరువాత caching చేసేటప్పుడు ఇది ముఖ్యమైనది.

Schema మార్పుల తర్వాత కూడా script పనిచేయాలంటే మూడు నియమాలు పాటించాలి.

కొన్ని keys ఉండవు; అవి null గా ఉండవు. సంబంధిత feature active గా ఉన్నప్పుడు మాత్రమే vim, agent, pr, worktree మరియు effort కనిపిస్తాయి. vim mode off లో ఉన్నప్పుడు jq -r తో .vim.mode చదివితే literal string null ముద్రితమవుతుంది. అప్పుడు bar లో reader కు null కనిపిస్తుంది. ప్రతి selector కు // empty ను జోడించండి. అప్పుడు key లేకపోతే ఏమీ ముద్రితమవదు.

కొన్ని values ప్రారంభంలో null గా ఉంటాయి. మొదటి API response రాకముందు context_window.used_percentage మరియు context_window.current_usage null గా ఉంటాయి. /compact తర్వాత, తదుపరి call దాన్ని మళ్లీ నింపే వరకు current_usage తిరిగి null అవుతుంది. అందువల్ల bar లో context percentage చూపించాలంటే // 0 అవసరం. లేకపోతే ప్రతి session ప్రారంభంలోని మొదటి కొన్ని seconds పాటు null చదవబడుతుంది. ఆ సంఖ్యను bar లో చూపించే ముందు context window వాస్తవంగా ఎలా నిండుతుందో తెలుసుకోవడం ఉపయోగకరం.

git branch JSON లో ఉండదు. ఏ field కూడా దాన్ని నివేదించదు. మీ bar లో కనిపించే branch, మీ script స్వయంగా git నడపడం ద్వారా వస్తుంది.

విఫలమయ్యే బదులు పరిమిత స్థాయిలో పనిచేసే statusline స్క్రిప్ట్

ఇది copy-paste చేయగల సంస్కరణ. ఇది hostname, working directory, git branch మరియు model name ను ముద్రిస్తుంది. ప్రతి field కు fallback ఉంది. అందువల్ల ఖాళీ JSON object ఉన్నా ఉపయోగించగల line ఉత్పత్తి అవుతుంది.

#!/bin/bash
# ~/.claude/statusline.sh
input=$(cat)

# Read one field. Prints nothing when the key is missing or null.
field() { printf '%s' "$input" | jq -r "$1 // empty" 2>/dev/null; }

HOST=$(hostname -s 2>/dev/null)
[ -z "$HOST" ] && HOST="host"

DIR=$(field '.workspace.current_dir')
[ -z "$DIR" ] && DIR=$(field '.cwd')
[ -z "$DIR" ] && DIR="$PWD"

MODEL=$(field '.model.display_name')
[ -z "$MODEL" ] && MODEL="claude"

SHORT="$DIR"
if [ -n "$HOME" ]; then
  case "$DIR" in
    "$HOME") SHORT="~" ;;
    "$HOME"/*) SHORT="~/${DIR#"$HOME"/}" ;;
  esac
fi

BRANCH=""
if git -C "$DIR" rev-parse --git-dir >/dev/null 2>&1; then
  BRANCH=$(git -C "$DIR" branch --show-current 2>/dev/null)
  [ -z "$BRANCH" ] && BRANCH="detached"
fi

CYAN=$'\033[36m'
YELLOW=$'\033[33m'
DIM=$'\033[2m'
RESET=$'\033[0m'

LINE="${CYAN}${HOST}${RESET} ${SHORT}"
[ -n "$BRANCH" ] && LINE="${LINE} ${YELLOW}${BRANCH}${RESET}"
LINE="${LINE} ${DIM}${MODEL}${RESET}"

printf '%s\n' "$LINE"

ప్రతి read field ద్వారా జరుగుతుంది. ఇది // empty ను జతచేస్తుంది. అందువల్ల పేరు మార్చిన లేదా తొలగించిన key ఖాళీ string ను ఇస్తుంది. తరువాతి line default విలువను అందిస్తుంది. Directory కోసం ముందుగా workspace.current_dir, తరువాత cwd, చివరగా $PWD ఉపయోగించబడతాయి. Branch ను సాధారణ git బదులు git -C "$DIR" నుంచి తీసుకుంటుంది. అందువల్ల bar చూపిస్తున్న directory కి branch ఎల్లప్పుడూ సరిపోతుంది.

దీన్ని save చేసి, executable గా మార్చండి:

chmod +x ~/.claude/statusline.sh

Execute bit తప్పనిసరి. Claude Code command ను shell ద్వారా అమలు చేస్తుంది. అందువల్ల +x లేని script Permission denied తో విఫలమవుతుంది. stdout ఉత్పత్తి కాదు. row ఎటువంటి స్పష్టమైన error లేకుండా ఖాళీగా ఉంటుంది.

jq command line పై JSON ను parse చేస్తుంది. Fresh Ubuntu server లో ఇది default గా installed ఉండదు:

sudo apt update && sudo apt install -y jq

తరువాత, పైన ఉన్న మొదటి settings.json block ను ఉపయోగించి setting ను ఈ script కు చూపించండి.

మీరు విశ్వసించే ముందు script ను పరీక్షించండి

దాన్ని చేతితో రెండుసార్లు అమలు చేయండి. మొదట సాధారణ session object తో:

echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/srv/api"},"session_id":"t1"}' | ~/.claude/statusline.sh

ముందుగా hostname, తరువాత /srv/api, ఆపై Opus కనిపిస్తాయి. ఎటువంటి branch కనిపించదు, ఎందుకంటే మీ machine పై /srv/api బహుశా git repository కాదు.

రెండవది degradation test. దీన్ని చాలామంది దాటవేస్తారు:

echo '{}' | ~/.claude/statusline.sh

Schema మార్పు మీకు అందించగల అత్యంత ప్రతికూల పరిస్థితి empty object. ఆ line ఇప్పటికీ hostname, $PWD నుంచి current directory, అలాగే model name ఉండాల్సిన చోట claude అనే పదాన్ని print చేస్తుంది. ఏదీ crash కాదు. null కూడా print కాదు. ఈ test లో విజయవంతమైన script లో field పేరు మార్చినా అది పనిచేస్తుంది, ఎందుకంటే మీ script దృష్టిలో renamed field మరియు missing field ఒకే సంఘటన.

మీరు చూడాల్సింది

statusline built-in footer badges పైన తన స్వంత rowలో కనిపిస్తుంది. ఇది వాటిని భర్తీ చేయదు. సరిగ్గా పనిచేసే సెటప్‌లో ఇది ఒకే rowగా ఉంటుంది: cyan రంగులో short hostname, తరువాత మీ home directoryని ~గా సంక్షిప్తం చేసిన working directory, ఆ directory git repository అయితే yellow రంగులో branch name, చివరగా dimmedగా model name కనిపిస్తాయి. ఆ నాలుగు భాగాలు రంగులతో ఉన్న web-01 ~/api main Opusకు దగ్గరగా ఉండాలి.

Session ప్రారంభమైనప్పుడు, resume సహా, కొత్త assistant message వచ్చినప్పుడు, /compact పూర్తయిన తరువాత, permission mode మారినప్పుడు, vim mode toggle అయినప్పుడు, అలాగే మీరు ఒక tick సెట్ చేస్తే ప్రతి refreshInterval tickకి మీ script మళ్లీ run అవుతుంది. Updates 300 ms పాటు debounce అవుతాయి. అందువల్ల తక్కువ వ్యవధిలో అనేక మార్పులు వచ్చినా script ఒక్కసారి మాత్రమే run అవుతుంది. Autocomplete, help menu, permission prompts సమయంలో bar దాగి ఉంటుంది. తరువాత మళ్లీ కనిపిస్తుంది.

హోస్ట్‌నేమ్‌కు మొదటి స్థానం ఎందుకు ఇవ్వాలి

మీరు ఒకటి కంటే ఎక్కువ సర్వర్‌లపై agents నడుపుతున్నప్పుడు, మీరు ఎక్కడ ఉన్నారో terminal మాత్రమే తెలియజేస్తుంది. అయితే terminals తప్పుదారి పట్టించవచ్చు. tmux pane లోపల నుంచి రెండో ssh connection తెరిస్తే window title తరచుగా పాత పేరునే చూపిస్తుంది. ఎందుకంటే ఆ title ను సెట్ చేసే shell తాను కొత్త స్థానానికి మారిందని తెలుసుకోలేదు. detached tmux session లో VPS పై Claude Code ను నడుపుతూ వదిలి, ఒక రోజు తర్వాత మళ్లీ attach అయితే, build server మరియు production box ను screen పై వేరు చేసే సమాచారం ఏదీ కనిపించదు.

statusline భిన్నంగా ఉంటుంది. ఇది ప్రతి session కోసం Claude Code స్వయంగా, ఆ session వద్ద ఉన్న data ఆధారంగా render చేస్తుంది. ఇది తప్పు pane నుంచి inherit కాదు. Refresh కాని shell prompt వల్ల పాత సమాచారంగా కూడా మిగలదు. అందులో కనిపించేది agent files రాస్తున్న box.

ప్రతి server ను చదవకముందే గుర్తించడానికి దానికి ప్రత్యేక రంగు ఇవ్వండి. LINE= assignment కు పైన ఈ రెండు lines ఉంచండి:

CODE=$(printf '%s' "$HOST" | cksum | cut -d' ' -f1)
HOST_COLOR=$(printf '\033[%dm' "$((31 + CODE % 6))")

తర్వాత ${CYAN} స్థానంలో ${HOST_COLOR} ను ఉపయోగించండి. cksum hostname యొక్క checksum ను print చేస్తుంది. అందువల్ల ఒకే పేరు ఎల్లప్పుడూ 31 నుంచి 36 పరిధిలోని ఒకే రంగుకు map అవుతుంది. ఈ పరిధిలో red నుంచి cyan వరకు రంగులు ఉంటాయి. అదే script ను ప్రతి box కు copy చేస్తే, ప్రతి box తన label ను తానే చూపిస్తుంది.

అదే కారణంతో directory కూడా statusline లో ఉండాలి. /srv/api మరియు /srv/api-staging ఒక ssh command లో ఒక keystroke దూరంలో ఉంటాయి. అయితే వాటి ప్రభావం పరంగా మొత్తం incident అంత తేడా ఉండవచ్చు. మిగిలిన రెండు విలువైన అంశాలు model మరియు branch. వాటికి అవసరమైన వెడల్పు కేటాయించండి. మీరు ఏ session ను resume చేశారో model తెలియజేస్తుంది. Agent ఏ branch లో commit చేయబోతుందో branch తెలియజేస్తుంది, ముఖ్యంగా అది main పై commit చేయబోతుందా అన్నది స్పష్టమవుతుంది.

చిన్న screen ఉపయోగించినప్పుడు ఇవన్నీ మరింత ముఖ్యమవుతాయి. ఎందుకంటే ఆధారపడటానికి window title ఉండదు. మీ setup ఇదే అయితే, ఫోన్ నుంచి Claude Code ను నియంత్రించడం చూడండి.

స్క్రిప్ట్‌ను వేగంగా ఉంచండి

మీ స్క్రిప్ట్ ప్రతి assistant సందేశంలోనూ నడుస్తుంది. కొత్త update వచ్చినప్పుడు Claude Code ప్రస్తుతం నడుస్తున్న ప్రక్రియను రద్దు చేస్తుంది. అందువల్ల స్క్రిప్ట్ నెమ్మదిగా ఉంటే పాత text కనిపించవచ్చు లేదా ఏ text కూడా కనిపించకపోవచ్చు.

ప్రతి jq call కు కొన్ని milliseconds పడతాయి. నెమ్మదిగా మారేది git భాగం: cache ఖాళీగా ఉన్నప్పుడు పెద్ద repositoryలో git status కు వందల milliseconds పడుతుంది. పై స్క్రిప్ట్ కావాలనే git status ను నివారిస్తుంది. బదులుగా ఇది git branch --show-current ను call చేస్తుంది. అది .git/HEAD ను చదివి వెంటనే return చేస్తుంది.

మీరు మరింత భారమైన పనిని జోడిస్తే, దాని ఫలితాన్ని fileలో cache చేసి ప్రతి కొన్ని secondsకు refresh చేయండి. ఆ fileకు session ఆధారంగా key ఇవ్వండి:

CACHE="/tmp/statusline-$(field '.session_id')"

session_id ను ఉపయోగించండి, $$ ను కాదు. $$ మీ స్క్రిప్ట్‌కు సంబంధించిన process ID. ప్రతి invocationలో ఇది మారుతుంది. అందువల్ల దాని ఆధారంగా cacheకు key ఇస్తే cache ఎప్పుడూ hit కాదు. ప్రతి సారి పూర్తి ఖర్చును చెల్లించాల్సి వస్తుంది. session_id మొత్తం sessionకు స్థిరంగా ఉంటుంది, sessions మధ్య మాత్రం భిన్నంగా ఉంటుంది. అందువల్ల వేర్వేరు repositoriesలోని రెండు Claude Code sessions ఒకదాని cached branch nameను మరొకటి చదవలేవు. Sessions ఉద్దేశపూర్వకంగా ఇంతటి isolationతో ఉంటాయి. కాబట్టి ఒక session నుంచి మరొకదానికి పని అప్పగించాలంటే ప్రత్యేక చర్య అవసరం. ఇందుకోసమే ఒక Claude Code session నుంచి మరొక sessionకు message పంపడం ఉపయోగపడుతుంది.

తెలుసుకోవాల్సిన మరో పరిమితి ఉంది: statusline scriptలో tput cols పనిచేయదు. Claude Code outputను capture చేస్తుంది; మీ scriptను terminalకు attach చేయదు. అందువల్ల widthను గుర్తించడానికి కొలవాల్సినదేమీ ఉండదు. Commandను అమలు చేయడానికి ముందు Claude Code COLUMNS మరియు LINES environment variablesను సెట్ చేస్తుంది. ఇది v2.1.153 మరియు తదుపరి versionsలో అందుబాటులో ఉంది. ఎంత output print చేయాలో నిర్ణయించాల్సినప్పుడు $COLUMNS ను చదవండి.

స్థితి పంక్తి ఖాళీగా ఎందుకు ఉంటుంది

ఏదీ కనిపించదు. ls -l ~/.claude/statusline.shతో execute bit ను తనిఖీ చేయండి. తరువాత పైన ఉన్న mock input తో script ను చేతితో అమలు చేయండి. Shell లో అది ఒక పంక్తిని ముద్రిస్తే, కానీ Claude Code లో కనిపించకపోతే, claude --debugతో ప్రారంభించండి. ఇది session లో statusline మొదటిసారి అమలైనప్పుడు exit code మరియు stderr ను log చేస్తుంది.

Debug log లో Status line command skipped: workspace trust not accepted అని ఉంది. Statusline ఒక shell command ను అమలు చేస్తుంది. అందువల్ల ఇది hooks కు ఉన్న workspace trust gate వెనుకనే ఉంటుంది. ఆ directory కోసం trust dialog ను accept చేసే వరకు command అమలు కాదు. ప్రతి కొత్త clone Claude Code ఇంతకు ముందు చూడని directory గా ఉండే VPS లో ఇది సాధారణం. ఆ directory లో Claude Code ను restart చేసి dialog ను accept చేయండి.

అన్నీ ఖాళీగా ఉన్నాయి మరియు disableAllHooks సెట్ అయింది. settings.json లోని "disableAllHooks": true statusline ను కూడా disable చేస్తుంది. కారణం, ఇది అదే shell-execution gate ను ఉపయోగిస్తుంది. దాన్ని తొలగించండి లేదా false కు set చేయండి.

పంక్తి null ను ముద్రిస్తుంది. jq selector లేని లేదా null అయిన key ను చేరింది. jq -r null ను null అనే నాలుగు అక్షరాలుగా ముద్రిస్తుంది. Text కోసం // empty, numbers కోసం // 0 జోడించండి.

Script ను edit చేసిన వెంటనే పంక్తి ఖాళీ అవుతుంది. Non-zero తో ముగిసే command లేదా ఏమీ ముద్రించని command పంక్తిని ఖాళీ చేస్తుంది. సాధారణ కారణం [ -n "$BRANCH" ] && LINE="..." వంటి చివరి line. Branch ఖాళీగా ఉన్నప్పుడు ఇది 1తో exit అవుతుంది. దాంతో మొత్తం script యొక్క exit code కూడా అదే అవుతుంది. printf ను చివరిలో ఉంచండి లేదా exit 0 జోడించండి.

\e]8;; వంటి escape codes bar లో literal text గా కనిపిస్తాయి. echo -e కు బదులుగా printf '%b' ఉపయోగించండి. Clickable OSC 8 links కోసం వాటిని support చేసే terminal కూడా అవసరం. tmux లేదా SSH ఈ sequences ను తొలగించవచ్చు. అందువల్ల remote box లో plain colour సురక్షితమైన ఎంపిక.

పంక్తి కుడి వైపు కత్తిరించబడుతుంది. System notifications మరియు verbose-mode token counter రెండూ ఆ పంక్తిని కుడి వైపు నుంచి పంచుకుంటాయి. Narrow terminal లో ఇవి పరస్పరం overlap అవుతాయి. Output ను చిన్నగా ఉంచండి. Bar లోని ఒక సంఖ్యకు బదులుగా usage ను ఖచ్చితంగా లెక్కించాలంటే Claude Code tokens ను ఎలా లెక్కిస్తుంది చూడండి.

FAQ

Claude Code statusline setting ఎక్కడ ఉంటుంది?

ఇది settings.json లో statusLine block గా ఉంటుంది. అందులో type విలువ "command" గా, command విలువ script path లేదా shell command గా ఉంటుంది. User settings ~/.claude/settings.json లో ఉంటాయి. అవి ఆ machine లోని ప్రతి project కు వర్తిస్తాయి. Project settings repository లోని .claude/settings.json లో ఉంటాయి. ఆ directory కోసం ఇవే ప్రాధాన్యం పొందుతాయి. Settings స్వయంగా reload అవుతాయి. అయితే మార్పు తదుపరి update trigger వచ్చినప్పుడు మాత్రమే కనిపిస్తుంది. ఉదాహరణకు, మీ తదుపరి message సమయంలో అది కనిపిస్తుంది.

నా Claude Code statusline ఖాళీగా ఎందుకు ఉంది?

దాదాపు అన్ని సందర్భాలను నాలుగు కారణాలు వివరిస్తాయి. Script కు execute bit లేకపోవచ్చు. అందువల్ల shell Permission denied ను తిరిగి ఇస్తుంది. stdout కు ఏదీ చేరదు. Workspace trust dialog ను అంగీకరించకపోవచ్చు. అప్పుడు claude --debug, Status line command skipped: workspace trust not accepted ను log చేస్తుంది. disableAllHooks విలువ true అయి ఉండవచ్చు. అదే gate కింద statusline నిలిపివేయబడుతుంది. లేదా script non-zero తో exit కావచ్చు. దాంతో row ఖాళీగా ఉంటుంది. ముందుగా చేతితో test చేయండి: echo '{}' | ~/.claude/statusline.sh ఏదో ఒక output ను print చేయాలి.

Statusline JSON లో git branch ఉంటుందా?

ఉండదు. JSON లో model, workspace directories, context window numbers, cost వంటి session state ఉంటుంది. అందులో git గురించి ఏ సమాచారం ఉండదు. మీ bar లో branch కనిపించాలంటే మీ script git branch --show-current ను call చేయాలి. JSON నుంచి directory ను git -C "$DIR" ద్వారా pass చేయండి. అప్పుడు bar చూపిస్తున్న directory కు branch ఎల్లప్పుడూ సరిపోతుంది.

Statusline tokens ఖర్చు చేస్తుందా లేదా session ను నెమ్మదింపజేస్తుందా?

Tokens ఖర్చు కావు. Script local గా నడుస్తుంది. దాని output model కు ఎప్పుడూ పంపబడదు. Speed మీ బాధ్యత. ప్రతి assistant message సమయంలో command నడుస్తుంది. దీనికి 300 ms debounce ఉంటుంది. కొత్త update వచ్చినప్పుడు Claude Code ప్రస్తుతం నడుస్తున్న run ను cancel చేస్తుంది. అందువల్ల script పూర్తి కావడానికి ఒక second పడితే stale text కనిపిస్తుంది. పెద్ద repositories లో git status ను నివారించండి. ఎక్కువ సమయం తీసుకునే పనుల output ను session_id ఆధారంగా file లో cache చేయండి.

ప్రతి server లో వేర్వేరు statusline ఎలా చూపించాలి?

ఒకే script ను ఉంచి, machine వివరాలను అది చదివేలా చేయండి. పై script $HOSTNAME ను print చేస్తుంది. fallback గా hostname -s ను ఉపయోగిస్తుంది. అందువల్ల అదే file ను ప్రతి box కు copy చేసినా, ప్రతి దానిని సరిగ్గా label చేస్తుంది. Checksum colour విధానం ప్రతి hostname కు ప్రత్యేక colour ను ఇస్తుంది. ఒక server కు వేర్వేరు layout అవసరమైతే, ఆ box లో మీరు పనిచేసే repository యొక్క project settings లో statusLine block ఉంచండి. ఆ directory కోసం project settings user settings పై ప్రాధాన్యం పొందుతాయి.