Skip to main content

Claude Code

What​

Display Claude Code session information including the current AI model, token usage, costs, and workspace details. Shows a visual gauge of context window usage and formatted cost/token information for monitoring your Claude usage.

This segment integrates with Claude Code's statusline functionality to provide real-time session data in your prompt.

Working directory

oh-my-posh claude renders directory-aware segments — path, git, project and the language segments — and the .PWD, .Folder and .AbsolutePWD template values against the directory the payload reports in workspace.current_dir, falling back to cwd. When the payload reports neither, or reports a path that is not an existing absolute directory, the renderer's own working directory is used, as before.

The renderer's working directory itself is not changed, so external commands — including version manager shims — and the cmd, readFile and glob template functions still resolve relative to the directory Claude Code started the renderer in, not to workspace.current_dir.

Sample Configuration​

− ▢ × 󰯉 Opus 4.5  _ ohmyposh.dev − ▢ × 󰯉 Opus 4.5  _ ohmyposh.dev

Template (info)​

default template
\udb82\udfc9 {{ .Model.DisplayName }} \uf2d0 {{ .TokenGauge }}

Options​

NameTypeDefaultDescription
gauge_marked_charstring▰Character used for filled blocks in gauge visualizations
gauge_unmarked_charstring▱Character used for empty blocks in gauge visualizations

Properties​

NameTypeDescription
.CWDstringCurrent working directory; same value as .Workspace.CurrentDir
.SessionIDstringUnique identifier for the Claude session
.SessionNamestringCustom session name; empty when absent
.PromptIDstringUser prompt identifier for event correlation; empty when absent
.TranscriptPathstringPath to the conversation transcript file
.ModelModelAI model information
.WorkspaceWorkspaceWorkspace directory information
.VersionstringClaude Code version
.OutputStyleOutputStyleCurrent output style information; nil when absent
.EffortEffortReasoning effort information; nil when absent or unsupported
.ThinkingThinkingExtended thinking state; nil when absent
.CostCostCost and duration information
.ContextWindowContextWindowToken usage information
.Exceeds200KTokensboolWhether the most recent API response exceeded 200K total tokens
.VimVimVim mode information; nil when absent
.AgentAgentAgent information; nil when absent
.PRPRPull request information for the current branch; nil when absent
.WorktreeWorktreeClaude Code worktree information; nil when absent
.FastModeboolWhether fast mode is enabled; false when absent or unsupported
.TokenUsagePercentPercentagePercentage of context window used (0-100)
.TokenGaugestringGauge showing remaining context capacity using configured characters (e.g., ▰▰▰▱▱)
.TokenGaugeUsedstringGauge showing used context capacity using configured characters (e.g., ▰▰▱▱▱)
.FiveHourGaugestringGauge showing 5-hour rate limit usage using configured characters
.SevenDayGaugestringGauge showing 7-day rate limit usage using configured characters
.FiveHourResetsAttime.Time5-hour rate limit window reset time
.SevenDayResetsAttime.Time7-day rate limit window reset time
.FiveHourResetsIntime.Durationtime until 5-hour resets; 0=unavailable, neg=past
.SevenDayResetsIntime.Durationtime until 7-day resets; 0=unavailable, neg=past
.FormattedCoststringFormatted cost string (e.g., "$0.15" or "$0.0012")
.FormattedTokensstringHuman-readable token count (e.g., "1.2K", "15.3M")
.FormattedDurationstringTotal session duration (e.g., "2m 5s")
.FormattedAPIDurationstringAPI wait time (e.g., "0m 45s")
.FiveHourUsagePercentage5-hour rolling rate limit usage (0-100)
.SevenDayUsagePercentage7-day rate limit usage (0-100)
.PromptCachePromptCachePrompt cache statistics; nil until the first API response (requires v2.1.251)
.PromptCacheHitRatioPercentagePrompt cache hit ratio (0-100); 0 when unavailable
.PromptCacheGaugestringGauge showing the prompt cache hit ratio using configured characters
.PromptCacheExpiresAttime.TimeWhen the cached prefix goes cold; zero time when unavailable
.PromptCacheExpiresIntime.DurationTime until the cache goes cold; 0=unavailable, neg=past
.FormattedCacheWriteTokensstringHuman-readable tokens written to the cache this session (e.g., "352.0K")
.FormattedMissRecacheTokensstringHuman-readable tokens re-cached because of misses (e.g., "310.2K")

Model Properties​

NameTypeDescription
.IDstringTechnical model identifier
.DisplayNamestringHuman-readable model name (e.g., "Claude 3.5 Sonnet")

Workspace Properties​

NameTypeDescription
.CurrentDirstringCurrent working directory; same value as .CWD
.ProjectDirstringDirectory where Claude Code was launched; may differ from .CurrentDir
.AddedDirs[]stringAdditional directories added via /add-dir or --add-dir
.GitWorktreestringPath to the linked git worktree, empty when not inside a linked git worktree
.RepoRepoRepository identity parsed from the origin remote; nil when absent

Repo Properties​

NameTypeDescription
.HoststringRepository host, for example github.com; empty when absent
.OwnerstringRepository owner or organization; empty when absent
.NamestringRepository name; empty when absent
nil pointer fields

.OutputStyle, .Effort, .Thinking, .Vim, .Agent, .PR, .Worktree, .PromptCache, and .Workspace.Repo are all nil when the underlying data is absent. Guard direct field access with {{if .Effort}}{{.Effort.Level}}{{end}} to avoid template errors.

OutputStyle Properties​

NameTypeDescription
.NamestringName of the current output style

Effort Properties​

NameTypeDescription
.LevelstringReasoning effort level (low, medium, high, xhigh, max); empty when absent or unsupported

Thinking Properties​

NameTypeDescription
.EnabledboolWhether extended thinking is enabled; false when absent

Vim Properties​

NameTypeDescription
.ModestringCurrent vim mode; empty when vim mode is disabled

Agent Properties​

NameTypeDescription
.NamestringAgent name; empty when no agent is active

PR Properties​

NameTypeDescription
.NumberstringOpen pull request number for the current branch; empty when absent
.URLstringOpen pull request URL for the current branch; empty when absent
.ReviewStatestringReview status (approved, pending, changes_requested, or draft); empty when unavailable

Worktree Properties​

NameTypeDescription
.NamestringName of the active Claude Code worktree
.PathstringAbsolute path to the worktree directory
.BranchstringGit branch name for the worktree; empty when absent
.OriginalCWDstringDirectory Claude Code was in before entering worktree
.OriginalBranchstringBranch checked out before entering worktree; empty when absent

Cost Properties​

NameTypeDescription
.TotalCostUSDfloat64Total cost in USD
.TotalDurationMSDurationMSTotal session duration in milliseconds (formats as "Xm Ys")
.TotalAPIDurationMSDurationMSTime spent waiting for API responses (formats as "Xm Ys")
.TotalLinesAddedintLines of code added in the session
.TotalLinesRemovedintLines of code removed in the session

ContextWindow Properties​

NameTypeDescription
.TotalInputTokensintTotal input tokens used in the session
.TotalOutputTokensintTotal output tokens generated in the session
.ContextWindowSizeintMaximum context window size for the model
.CurrentUsageCurrentUsageCurrent message token usage

CurrentUsage Properties​

NameTypeDescription
.InputTokensintInput tokens for the current message
.OutputTokensintOutput tokens for the current message
.CacheCreationInputTokensintTokens used to create the prompt cache in the current message
.CacheReadInputTokensintTokens read from the prompt cache in the current message

PromptCache Properties​

Statistics for the main conversation's prompt cache. Access via .PromptCache. The object is nil until the first API response of the session and requires Claude Code v2.1.251 or later; fields marked v2.1.260 additionally require Claude Code v2.1.260 or later. Timestamps are Unix epoch seconds.

NameTypeDescription
.WarmboolWhether the cached prefix is still within its TTL
.CachingObservedboolWhether any response reported cache tokens; false means caching is off or not reported
.TTLstringCache lifetime of the current cached prefix: 5m or 1h
.ExpiresAt*int64When the cached prefix goes cold; nil when the last response reported no cache tokens
.RequestsintAPI requests recorded for the main conversation
.MissesintRequests that re-processed content the cache already held
.ExpectedRebuildsintCache rebuilds that followed a compaction or a clearing of old tool results
.HitRatio*float64Cache read tokens as a fraction (0-1) of all input tokens; nil while no tokens were counted
.CacheWriteTokensintAll tokens written to the cache this session
.MissRecacheTokensintTokens written to the cache by requests counted as misses
.LastMissAt*int64When the last miss happened; nil while there are no misses
.LastMissCauseLastMissCauseLikely cause of the last miss; nil when there is none or it is unknown (v2.1.260)
.MissCausesmap[string]intNumber of diagnosed misses per cause (v2.1.260)
.RecacheTokensIfCold*intTokens the next request re-caches if the cache goes cold; nil right after a compaction

LastMissCause Properties​

NameTypeDescription
.Causes[]stringCause names, such as tools_changed, system_prompt_changed, ttl_expired_5m, likely_server_side
.ToolsAddedintTools added to the request, reported with tools_changed
.ToolsRemovedintTools removed from the request, reported with tools_changed
.SystemCharDeltaintChange in system prompt length in characters, reported with system_prompt_changed
Prompt cache example

Guard against the object being absent so older Claude Code versions keep working:

{{ if .PromptCache }}{{ .PromptCacheGauge }} {{ .PromptCacheHitRatio }}%{{ if not .PromptCache.Warm }} cold{{ end }}{{ end }}

RateLimits Properties​

Available when Claude Code provides rate limit data (Pro/Max subscribers). Access via .RateLimits.

NameTypeDescription
.FiveHourRateLimitWindow5-hour rolling window
.SevenDayRateLimitWindow7-day rolling window

RateLimitWindow Properties​

NameTypeDescription
.UsedPercentage*float64Usage percentage (0-100), nil if unknown
.ResetsAt*int64Unix epoch seconds when window resets

Percentage Methods​

The Percentage type (returned by .TokenUsagePercent, .FiveHourUsage, .SevenDayUsage) provides additional methods for direct use in templates:

MethodReturnsDescription
.GaugestringVisual gauge showing remaining capacity using hardcoded ▰/▱ characters
.GaugeUsedstringVisual gauge showing used capacity using hardcoded ▰/▱ characters
.StringstringNumeric percentage value (e.g., "75" for use in templates)
Custom gauge characters

Use .TokenGauge, .TokenGaugeUsed, .FiveHourGauge, and .SevenDayGauge instead of the raw .Percentage methods above — they respect the gauge_marked_char and gauge_unmarked_char options.

How it works​

The segment reads session information from the POSH_CLAUDE_STATUS environment variable, which is automatically set when using the oh-my-posh claude command. The data includes:

  • Current AI model information
  • Token usage and context window utilization
  • Session costs and duration
  • Workspace directory information

The segment only displays when Claude Code is actively providing session data.