fix: Sanitise environment basename in shell prompt - #595
Merged
Conversation
The environment root's basename was interpolated raw into the generated PS1 assignment, so a directory named $(...) or containing backticks executed as the user on activation (bash) or at the first prompt (zsh). This is reachable by default: prompt = "env" resolves as the default for both absent and empty user config files. Replace runes outside a conservative allowlist rather than quoting the name into a shell variable, because zsh expands "%" after substitution and renders the reference literally unless PROMPT_SUBST is set. VULN-78225 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
alecthomas
enabled auto-merge (squash)
August 2, 2026 22:23
alecthomas
disabled auto-merge
August 2, 2026 22:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The environment root's basename was interpolated raw into the generated
PS1 assignment, so a directory named $(...) or containing backticks
executed as the user on activation (bash) or at the first prompt (zsh).
This is reachable by default: prompt = "env" resolves as the default for
both absent and empty user config files.
Replace runes outside a conservative allowlist rather than quoting the
name into a shell variable, because zsh expands "%" after substitution
and renders the reference literally unless PROMPT_SUBST is set.
VULN-78225
Co-Authored-By: Claude Fable 5 noreply@anthropic.com