Releases: tfcace/hash
Release list
v0.7.0
v0.6.1
0.6.1 (2026-06-17)
Dependencies
v0.6.0
v0.5.1
v0.5.0
Hash 0.5.0 Release Notes
Hash 0.5.0 is the tool-calling release. This release moves Hash from an agent-assisted shell that suggests commands toward an agent-assisted shell that can mediate tool execution with explicit user permission.
Headline: Agent Tool Calls
Hash now supports ACP agent tool permission requests.
When an ACP agent wants to run a tool, Hash receives the permission request, renders a terminal-native prompt, waits for the user's decision, and sends the result back to the agent. This makes tool use part of the shell workflow instead of a separate agent UI.
Permission prompts support three decisions:
| Key | Decision | Effect |
|---|---|---|
y |
Allow once | Approves this one tool request. |
n / Esc |
Deny | Rejects this tool request. |
a |
Always allow | Approves this exact command and stores it in the configured allowlist scope. |
Always-allowed commands are exact command matches. Allowing git status does
not also allow git status --short or git.
Approval Scopes
Tool approval persistence is controlled by:
[agent]
allowed_commands_scope = "project"Supported scopes:
| Scope | Storage | Behavior |
|---|---|---|
project |
~/.config/hash/project_allowlists/<project-hash>.json |
Default. Persists approvals per project directory, outside the worktree. |
global |
~/.config/hash/allowed_commands.json |
Persists approvals across all projects. |
session |
Memory only | Clears approvals when the shell exits. |
Project-scoped approvals reload when the working directory changes. This keeps approval decisions isolated between projects while still allowing commands to be remembered inside a project.
Permission UI and Streaming
Agent output is now coordinated through a shared output path so streaming text, permission prompts, confirmation hints, and cancellation cleanup do not write over each other.
This release includes:
- Permission prompt rendering with optional tool-name context.
- Stream buffering while a permission prompt is active.
- Prompt cleanup after allow/deny decisions.
- Cancellation cleanup for visible permission prompts.
- Race coverage for concurrent agent-output operations.
Agent and ACP Reliability
0.5.0 hardens the ACP transport around real shell usage:
- Bidirectional ACP request handling for
session/request_permission. - Tool call ID and tool-name extraction from ACP request payloads.
- Permission requests are serialized so prompts do not overlap.
- ACP timeout handling avoids firing while Hash is waiting on a local permission decision.
- ACP reconnect behavior is hardened after broken pipes, cancellation, and startup failures.
- Plain explanatory agent responses are filtered before command confirmation to reduce accidental command classification.
- Bare
??after a failed command can use the last error as context.
Agent Configuration
Hash now supports named agent profiles.
Flat config still works:
[agent]
transport = "stdio"
command = "claude-code-acp"Named agents can be selected with [agent].default:
[agent]
default = "ollama"
timeout = "120s"
allowed_commands_scope = "project"
[agent.claude]
transport = "stdio"
command = "claude-code-acp"
[agent.gemini]
transport = "stdio"
command = "gemini"
args = ["--experimental-acp"]
[agent.ollama]
transport = "http"
url = "http://localhost:11434/api/generate"
model = "codellama:13b"
headers = { Authorization = "Bearer token" }The HTTP transport uses an Ollama-style /api/generate request and response
shape. It is not generic OpenAI-compatible API support in 0.5.0.
Daily-Driver Polish
0.5.0 also includes a broad set of shell quality improvements.
Migration and startup
- First-run migration asks before loading detected shell settings.
hash migratecan still import detected bash/zsh settings with compatibility filtering.hash migrate statusreports imported and skipped items.- Generated migration comments no longer mention the removed
hash migrate generatecommand. - Startup tips are shown once and remain available via
tips.
History
- Builtin commands and agent prompts are recorded in history.
- History can be disabled with
history.enabled = false. - The history database path can be configured with
history.path. - Ctrl+R search handles space input and avoids terminal response leakage.
Completion
- VCS-aware git/jj branch and revision completion.
- Semantic completions for common tools including SSH, kill, make, man, npm, pip, and brew.
- Directory-only completion for commands such as
cd,pushd,popd, andrmdir. - Better shell-word escaping for completed file paths.
- Completion behavior around drill-down directories and single matches is more predictable.
Editing and prompt behavior
- Fish-style inline history suggestions.
- Shift+Arrow text selection in insert mode.
- Improved shell-token word movement and deletion.
- Prompt and Starship subprocess work is reduced.
- Rendering fixes for wrapping, cursor placement, and terminal escape leakage.
Integrations
setup-zoxideconfigures zoxide integration from Hash.chpwdhooks can run commands after directory changes.- Zoxide, direnv, fzf, and Starship documentation has been updated.
Pipeline and PTY fixes
- Pipeline producers no longer run behind a PTY when stdout is a pipe.
- This fixes commands such as
git branch | grep <branch>hanging because the
upstream command incorrectly believed it was writing to a terminal. - PTY output handling and command cancellation paths are more robust.
Behavior Changes
- First-run migration no longer auto-loads detected shell files.
hash migrate generateis not included in 0.5.0.- HTTP agents are Ollama-style, not generic OpenAI-compatible endpoints.
- History retention fields are reserved but not enforced in 0.5.x.
- Tool approvals are exact-command approvals; prefixes and substrings do not match.
Known Limitations
- Tool calling depends on ACP agent support.
- HTTP agents do not get the same ACP session and tool-permission behavior.
- Tool approval persistence stores exact command strings, not parsed command policies.
- History retention settings are documented as reserved but are not enforced.
- Hash remains pre-1.0 and may still make breaking changes.
v0.4.3
v0.4.2
v0.4.1
v0.4.0
0.4.0 (2026-01-29)
Features
- add bash/zsh migration system with compatibility layer (8474089)
- alias/function tab-completion (ec68874)
- completion: mask sensitive env var values in completion preview (09d2d88)
Bug Fixes
- add environment variable tab-completion with value preview (f07c236)
- copy agent response to system clipboard with feedback (9110225)
- disable ONLCR on PTY when stdout is a pipe (8b7fc9c)
- handle agent startup failures gracefully (67959bd)
- improved handling of complex aliases when migrating from zsh (#12) (43ec193)
- preserve cursor position when rendering completion menu (fa7f0f3)
- use graceful degradation for source/eval compatibility (7101c49)