# Changelog (release notes)
Source: https://docs.piebald.ai/changelog
Latest updates and improvements to Piebald.
## Piebald v0.6.2
In Piebald v0.6.2 we’ve fixed a few more bugs reported after v0.6.1 and added a few more enhancements:
* Added a red trash icon next to the Done, Abandoned, and Backlog quick status buttons when holding Ctrl/Cmd and hovering over a chat in the sidebar
* Added an environment variable `PB_SKIP_AUTH_TOKEN` that can be set before launching the Piebald Web server to remove the requirement for the token auth screen
* Added Gemini 3.6 Flash to the hardcoded list of Antigravity models (fallback in case automatic listing fails)
* Fixed a bug where long 424-character message IDs generated by GitHub when using GitHub Copilot (for Business) break when sent to OpenAI, which requires 64-character message IDs
* Fixed a bug where OpenAI-generated reasoning traces would break the chat when switching to an Anthropic provider
* Fixed a bug where DeepSeek v4 Flash reasoning traces would sometimes not be passed back
* Fixed a bug where parallel tool calls in the OpenAI Responses API would sometimes not be batched properly
* Fixed a bug where the notification for requiring authentication for MCP servers would sometimes not show
* Fixed a bug where spawning MCP servers only looked for `.exe` files on Windows, so `npx` would report as not found if it existed in PATH as `npx.cmd`
* Updated several dependency versions
## Piebald v0.6.1
In Piebald v0.6.1 we’ve fixed a few bugs reported after v0.6.0 and added a few more enhancements:
* Fixed the `WebFetch` tool’s schema containing `oneOf` which broke some providers.
* Fixed a bug with OpenAI providers when “Parallel tool calls” is on but no tools are enabled.
* Made Mermaid diagram support more robust against common syntax errors.
* Made goals automatically stop if the model responded with no tool calls three times in a row.
* Made message regeneration delete the previous message for Pro users if it only contained an error message.
* Fixed integrated terminal PTY errors on newer versions of Windows.
* Removed the “Custom” badge for custom providers.
* Extended error classification to cover more error messages from different providers.
## Piebald v0.6.0
In Piebald v0.6.0, we’ve added the ability for AI to search your past Piebald chats, experimental support for enterprise system proxies, an enhanced chat searching UI and “all chats” page, the ability to use Piebald with your SuperGrok subscription, and experimental support for OpenCues!
## AI chat search
AI can now search for text across all of your past chats with a `SearchChats` tool. You can tell it to look for chats about a certain topic, and even specify start and end date ranges.
## Experimental: enterprise proxy support (Pro)
Piebald now supports using any proxy configured by your system, either automatically via PAC (proxy autoconfig) files or manually. It also supports different types of proxies such as SOCKS5 and HTTPS, and different types of proxy authentication such as NTLM and Kerberos. Windows, macOS, and Linux are supported.
The Piebald team doesn’t have access to enterprise systems where PAC files and NTLM/Kerberos authentication are used, so while we have internal unit and integration tests for all aspects of proxy support, and while we have tested basic proxy support with local proxies like Reqable and Charles and simulated enterprise environments, we haven’t been able to manually test all advanced aspects of our proxy support in a real setting. Please report any bugs you encounter!
## Enhanced chat searching UI and “all chats” page
We’ve refreshed the chat searching UI, moving it to the sidebar instead of a dialog, and making it resemble VS Code’s search in UI and controls. It’s also clearer—the previous search had bugs that sometimes made results hard to access.
And when you click the “View all chats”, Piebald will now show all the chats in a clean layout with different sorting, filtering, and display options.
## SuperGrok subscription support
You can now sign in to your SuperGrok subscription in Piebald.
## Experimental: OpenCues support
Piebald now features experimental support for [OpenCues](https://opencues.com/) ([GitHub repo](https://github.com/opencues/opencues)), an open standard for two text surfaces—cues and blanks—where the AI can watch you type, comment helpfully on what you’re writing, and suggest alternatives and completions.
## GitHub-style inline color swatches (Pro) / Buttons to download a plan and chat history
When you or the model mentions a CSS color as hex `#a1b2c3`, RGB (`rgb(12, 34, 56)`), or HSL (`hsl(123, 50%, 75%)`), Piebald will now show a sample of that color on the right, like GitHub.
There’s also a new button on plans to download the plan to a file, and a new button in the Edit menu at the top of the app to download the whole chat history to a file.
## Other
In addition to the above, we’ve also added a few smaller features and UI enhancements:
* Enhanced the sidebar to show **what kind of tool—edit, terminal command, MCP, question, or plan—is waiting for user input/approval**
* Added a **"recommended" badge and a pros/cons list** to suggested answers when the AI asks you questions
* Added **3 new settings in Settings → Agent context** to disable loading global/local skills and `AGENTS.md`
* Added builtin tools to **list and read MCP resources from MCP servers**
* Added the ability to **hide providers from the main provider list**
* Enhanced the **startup screen**
* Added 16 new **guided tours** and improved the tour selection interface
* Added **automatic suggestion to create a new branch** when filtering by a worktree name that doesn't exist
We’ve fixed numerous bugs that we’ve encountered ourselves and that users have graciously reported.
**Error handling:**
* Increased the number of automatic retries from 3 to 10
* Increased error automatic retry coverage to include empty provider responses
* Fixed a bug where automatic retry didn't take effect for many error types
* Reduced the accumulated delays between automatic retries
* Fixed an issue with OpenAI Responses API support where `arguments.done`/`output_item.done` being omitted could make finished responses automatically retry unnecessarily
* Enhanced the friendly error message for "no upstream channel" errors
* Enhanced error display for Bedrock validation errors
* Enhanced error display for negative provider account balance errors
* Fixed a bug where dismissing a generation error didn't remove the message, leaving an empty message shell
* Fixed bugs with the ChatGPT rate limit reset display
* Corrected timezone detection for rate limit errors with a scheduled reset
* Fixed a bug where certain models used via OpenCode Zen would automatically retry a perfectly fine response indefinitely
* Fixed the classification of errors from Claude Code caused by the OAuth token being revoked
* Fixed the classification of errors caused by `max_completion_tokens` being out of range
**Provider support:**
* Implemented preservation of reasoning across multiple calls to OpenAI Responses APIs
* Added support for a quirk in some OpenAI-compatible APIs where role is null
* Refactored Amazon Bedrock requests to go through our internal HTTP plumbing instead of the AWS SDK
* Made changes to the current provider/model propagate to the generation loop
* Added support for decompression of Brotli-compressed responses from the Anthropic API
* Made support for OmniRoute/9router more stable
* Made support for quirks in Anthropic-compatible APIs more stable
* Made support for unknown streamed item types (e.g. “reasoning”) more stable
* Fixed a bug where subagents weren't using the profile's generation config
* Fixed a bug where the device code dialog wouldn't close until sign-in was complete
**Claude Code:**
* Fixed a bug where assistant text in `Stop`, `SubagentStop`, and `StopFailure` hook payloads was empty
* Fixed a bug where opening projects in the home directory would load hooks twice
* Fixed a bug with Claude Code prompt caching
* Fixed an additional bug with Claude Code support
**Tools and MCP:**
* Sharpened the plan approval message to fix how GPT sometimes just acknowledges the approval instead of executing the plan
* Fixed a bug with cancellation of in-progress MCP OAuth authentication
* Fixed a bug in tool schema generation for Antigravity for MCP tools
* Fixed a bug where tool call rendering could break if the model specified certain combinations of invalid parameters
* Hid the file content when a Write tool call fails so that the actual error isn't buried
* Normalized `/mnt/` in builtin tools
* Fixed grammar in the specialized Xcode tool call rendering
* Fixed a bug where the model specifying a `head_limit` of `0` for `Grep` returned literally 0 results instead of unlimited
* Fixed a bug where empty MCP tool call responses broke the chat
* Fixed a bug where the chat view could crash if an MCP server's metadata is malformed
* Fixed OAuth MCP token refreshing
* Made MCP server name prefixing for tool disambiguation aware of Antigravity's 64-character tool name limit
* Made hallucinated/malformed tool calls automatically denied
* Made support for missing tool input more stable
* Made support for tool calls without indexes more stable
* Fixed a bug where tool calls would sometimes not be terminated when the generation failed
**Terminal:**
* Implemented another fix for the terminal garbling
* Fixed terminal commands returning ASCII sequences to AI
* Fixed a bug where terminal commands run by the AI could steal focus from the message input while you're typing
* Made the integrated terminal background use `panel.background` when importing VS Code themes
* Fixed additional bugs in the integrated terminal
* Fixed overly eager terminal truncation on Windows
* Fixed a bug with `cmd.exe` support that caused commands with double quotes to be improperly escaped
* Fixed a Windows ANSI Line Feed Mode issue
**Messaging/input:**
* Fixed a bug where tab didn't work when you typed `/` and then focused a skill name
* Fixed a bug where sending a message could hang in certain rare cases
* Fixed a bug where accidental empty messages would break the Claude Code backend
* Fixed a bug where transient disk errors on Windows could prevent sending a message using Claude Code
* Made the message input regain focus after you send a message and after you change the enter/return key behavior or queuing type
* Added support for Tab and Shift-Tab indentation in lists in the rich-text editor
* Fixed new-line insertion with Enter/Shift-Enter in lists in the rich-text editor
* Fixed list item ordinals with 3 digits being truncated
* Fixed Home/End key behavior in filter/search dropdown inputs
* Added prose spacing around markdown tables
* Made the message input auto-focus when sending a new message
* Fixed a bug where draft messages loaded after the main prompt
* Disabled the input box while a chat is loading to prevent draft overwriting
* Fixed nested backtick markdown rendering
**Title & Tag Generation:**
* Made the Add Tag button open a dialog for customizing the new tag
* Fixed a bug where Pro-only tag-assignment instructions in the Title & Tag Generation system prompt weren't being preserved for Pro users
**Interface:**
* Fixed a bug where tooltips in the sidebar could flicker
* Added a short delay before tooltips open
**Database/performance:**
* Fixed a common cause of "database is locked"
* Fixed a "record not found" error that intermittently occurred when going to certain chats in new DBs
* Optimized DB flushes during streaming
* Optimized chat loading across projects
* Optimized project loading across projects
* Fixed a bug where successful HTTP requests weren't being stored temporarily at all, making support harder
* Fixed a bug where certain operations could fail intermittently after the device lost all available space and then regained it
**Stability:**
* Fixed panics due to occasional improper string indexing
* Fixed a panic when clicking certain links in the app
## Next up
We’ve been hard at work on **backup and sync with Piebald Cloud**, and we’ll soon have it done. We’ve also been working on several other large features and a large internal refactoring that will open the door to many additional conveniences and features, and we hope to have several of these out in subsequent versions.
In this release we've fixed a number of bugs and added some small features:
* Added support for **viewing and redeeming ChatGPT/Codex rate limit resets**
* Added an option to **configure the default path for new worktrees**
* Enhanced **tool call rendering for Xcode MCP tool calls**
* Added an option to **make the Enter key add a new line** instead of send the message and Cmd/Ctrl+Enter send the message
* Add Git's `blame`, `shortlog`, `show-ref`, `for-each-ref`, `rev-list`, `name-rev`, `whatchanged`, and `stash list/show` subcommands to the auto-approval list
* Added right-click options to create files and folders in the file sidebar
* Added an `anchor_line` option to `EditFile` tool calls
* Made eligible tool calls auto-approve when switching to a more permissive permission mode
* Added a setting to re-enable the terminal-close notification
* Added a setting to exclude certain files (e.g. hidden/temporary/system files) from the file browser
* Added automatic refresh for the file browser when files in the project are changed on disk
* Made the `SessionEnd` CC hook trigger when a chat is marked as Done or Abandoned
* Fixed display names for Antigravity model listings
* Fixed Openference support with a custom User-Agent header
* Made disabling thinking work for Claude Code providers
* Fixed an ugly error when creating a project and initializing a Git repo when `git` isn't installed
* Hid the title regeneration button when there are no messages in the chat
* Made viewing untracked files in the Git view not crash
* Fixed the new-terminal button not being disabled for Basic users
* Fixed a bug where random items would be pre-selected when @-mentioning files
* Fixed a bug where Claude Code errored when used in a directory that didn't exist
* Reduced frequency of MCP tool listings calls
* Redacted images in the HTTP traffic viewer for Bedrock requests for UI performance
* Fixed a bug where drafts could get cleared if chats haven't loaded yet
* Fixed an ``unknown variant `fallback`, expected one of `text`, `tool_use`, `thinking` `` error that could occur with certain Anthropic-provider errors
* Fixed multiple ``Failed to parse event: missing field `id` `` errors that could occur with with certain OpenAI-compatible providers
* Fixed a bug where automatic tool call approval could sometimes break when a chat was compacted
* Fixed occasional truncation and garbling of terminal command tools' output
* Fix tool call approval for chats that have their message date and times messed up
* Disabled the “Continue” button when there are pending tool calls
* Fixed a rare data integrity issue
* Made worktrees that are being deleted show as loading
* Made unreadable (e.g. binary or missing) file @-mentioned surface as notes to the model
* Made clicking notifications exit the full-screen terminal
* Fixed a bug where clicking
* Fixed the “Use” button on providers in the settings not response
* Fixed a markdown rendering bug when escaping math
* Fixed a markdown rendering bug with code blocks in list items
* Made more safe `sed` invocations be auto-approved
* Added settings to configure the line height of code and terminals
* Fixed a bug where read tool calls would unnecessarily prompt for permission when the path was invalid
* Fixed a bug where invocations of non-existent tool calls wouldn't be auto
* Fixed a bug where maliciously crafted invocation of `sort`, `less`, and other commands could write files using `-o`
* Fixed a bug where OpenAI cache-write usage wasn't preserved
* Added support for the `max` reasoning level for GPT-5.6 models
* Fixed a bug where todo-related MCP tools could accidentally pollute the current TODO display
* Removed the MCP registry count scraping
* Corrected spacing around punctuation in French UI translations
* Enhance Claude Code provider internals
* Surfaced provider errors on provider reload
* Fixed display of provider errors in the provider card
* Hid the pause widget for subagent chats when the parent chat is paused
* Fixed a bug where one failed URL in a batch of parallel URL fetches could fail the whole batch
* Set the thinking display to summarized instead of off for Sonnet 5 / Opus 4.7+
* Fixed a bug where deleting message containing a pending tool call would sometimes leave the chat status indicator status
* Fixed a bug where markdown links to files on disk could be broken on Windows if they started with a drive letter
* Filtered out binary files from file @-mention dropdown
* Fixed a bug where file edits with `replace_all` set would unnecessarily fail if there was only 1 occurrence of the text to replace
In Piebald v0.5.1, we've enhanced the Python environment picker UI and fixed several bugs:
* Enhanced the Python envronment picker UI
* Enhanced automatic read-only terminal command approval
* Improved the jump-to-top / jump-to-bottom button hover effect
* Made the "Add provider anyway" button work
* Hid unnecessary error toasts for some new users
* Made Xunfei errors clearer and more informative
* Made GLM and DeepSeek "image unsupported" errors clearer and more informative
* Tightened the file-mention chip height
* Fixed intermittent errors with Edit tool call rendering
* Added new chat/terminal buttons to the chat topbar for convenience
* Fixed the chat topbar being draggable
* Fixed notifications showing when a the pausing of a chat has completed
* Normalized mixed-slash paths copied to the clipboard from tool calls
* Fixed the chat message count being stale during generation
* Fixed internal DB transaction performance to help resolve "database is locked" issues
* Fixed autocompaction token usage detection
* Fixed "Allowed Servers & Tools" section in the sidebar showing unchecked when some where checked
* Fixed settings opened via Ctrl+Comma not remembering last settings tab opened
* Fixed the goal icon positioning
* Fixed handling of malformed tool calls from OpenAI-compatible servers causing chat to get confused
* Made the parsing of SSE chunks from OpenAI-compatible chunks more robust against incompatibilies
* Made MCP OAuth failures easier to diagnose
In Piebald v0.5.0, we've added **enhanced error display**, **goals**, **Python environment support**, **attaching multiple images to feedback reports**, and many bug fixes!
## User-friendly rendering and automatic retry for common provider errors
Server errors happen, and you shouldn't be forced see a raw error string with an HTTP status code and JSON. We now catch and handle many different types of errors that we've seen occur over hundreds of different providers all over the world, and display them as a friendly warning with advice on how to fix them.
We also automatically retry on many more of them than we did before, so most intermittent errors like "overloaded", "internal server error", local network flukes, and temporary rate limiting, will be silently glossed over if possible so you won't suffer an interruption.
You can still report any error—especially ones that you think look like bugs in Piebald—to us at any time.
## Goals
Inspired by Codex, we now support long-running goals. Goals force the model to continue working even when it tries to stop, and won't stop until the goal—a concrete, verifiable, user-defined objective—is marked as complete. Examples of good goals might be *“Migrate all router instances from React Router v5 to v6 in the /src/components directory.”* or *“Upgrade the project dependency 'lodash' to the latest stable version.”* ([OpenAI Developers Docs](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex))
## Python environment detection (Pro)
We now automatically detect common types of Python environments, such as built-in `venv` virtual environments, `conda` environments, and the newer `pixi` environments (see [GitHub](http://github.com/prefix-dev/pixi)), when you create a chat in a project that contains a configured Python environment. If we find multiple environments, we'll ask you to choose one and we'll save it as the default for all new chats in the project.
When a Python environment is selected, all terminal commands that the AI runs wills have environment variables from the Python environment's initialization process injected into them. Commands that you manually run in the integrated terminal will as well. The environment variables are cached when you select the venv for the first time.
## Multiple images in feedback
You can now attach multiple screenshots to feedback reports, if it helps you describe a bug or feature request:
## Other
We've also added other smaller features and fixed many bugs:
* Added support for the model setting a timeout on terminal commands
* Added a "Regenerate title" action chats in the sidebar
* Added the Desktop-style top bar with menu items and the Piebald version to web mode
* Added auto-approval of read-only Windows Batch commands
* Added Gemini 3.5 Flash to the Antigravity provider
* Added a link to start a trial on Pro features
* Added automatic retention for MCP server traffic logs to save disk space
* Fixed a bug where the UI didn't proactively update when trials expire
* Fixed the file browser button being broken for Basic users
* Unified spinner styles across the app
* Prevented a single broken message or tool call from breaking the entire chat
* Made long MCP tool inspection popovers scrollable
* Fixed skill header duplication in the slash-command dropdown menu
* Set up automatic Piebald version bumping for our Homebrew tap
* Fixed a bug where currently selected rate limit views were reset when switching chats
* Improved the GitHub Enterprise Copilot signin experince
* Fixed a bug when scrolling through a Monaco editor
* Fixed bugs when scrolling in several dropdown menus nested in dialogs like Settings
* Added debugging to unexpected Claude Code early exits
* Attached debug info to Piebald authentication errors
* Fixed some frontend performance issues
* Fixed subagent chats sometimes becoming detached from the parent chat visually
* Fixed a bug streaming text when new tool calls have been streaming
* Fixed chat metadata alignment
* Fixed more integrated terminal bugs
In v0.4.4 we've fixed several bugs, especially around generations hanging and timing out:
* Added per-SSE-chunk streaming timeout to detect stalled connections
* Added a "Stream Idle Timeout" setting to detect and terminate idle HTTP streams
* Improved internal HTTP request response body plumbing
* Improved HTTP robustness and network error recovery
* Added automatic retry for mid-stream network errors
* Largely fixed text garbling and rendering issues in the integrated terminal
* Fixed frequenty Claude Code PTY errors due to a short timeout
* Updated fallback model list for Claude Code providers to include Opus 4.7 and 4.8 and Fable 5.
* Fixed a bug where Ctrl+R in a terminal panel reloaded the window instead of triggering reverse-i-search
* Hid incorrect timeout values accidentally displayed for terminal commands
* Fixed parallel tool calls for Anthropic API key providers and Anthropic-compatible APIs
* Improved error messages when Google OAuth refreshing fails
* Fixed chat status/message count flicker
* Changed keyboard shortcut for toggling the sidebar from Ctrl+Shift+S to Ctrl+B
* Fixed `undefined is not an object (evaluating '$.initialized')` error sometimes occuring
* Fixed a bug where approving a tool call when there are many parallel tool calls pending approval automatically scrolls down
* Fixed the "esc" keyboard shortcut for cancellation not working sometimes
* Updated color in the sidebar for chats pending tool approval
* Fixed a intermittent "Line doesnt exist" error when using Pierre Diffs
* Fixed the native OS file picker allowing any file type when attaching an image
* Fully cancel Claude Code request when cancelling the current generation
* Fix bugs when approving tool calls
In this release we've fixed several bugs and added read-only detection and auto-approval for PowerShell commands.
* Added read-only detection and auto-approval for PowerShell commands
* Fixed a bug where the settings dialog was pinned at the General section when opened via Cmd/Ctrl + comma
* Fixed a bug when copying chats with skill slash-command usage
* Gave chat tag pills in the sidebar a little more padding
* Fixed a bug where indented code blocks had leading whitespace trimmed
* Fixed streaming of Mermaid diagrams
* Added zoom controls to Mermaid diagrams
* Enabled manual refreshing of ChatGPT/Codex subscription rate limit usage meter
* Added tooltips to the new chat and new terminal buttons in the sidebar
## Piebald v0.4.2
In this release we've fixed several bugs:
* Improved handling of skills with invalid names
* Added the build date in About menu
* Changed `TodoWrite` tool description to discourage usage for just chats and one-shot questions
* Fixed a bug with regenerating a message in a paused chats
* Fixed a bug with size of file mentions
* Added support for Git Bash/mingw `/c/Users/...`-style paths in builtin Read/Write/Edit tools
* Fixed overflow bugs in the create worktree dialog
* Added the ability to collapse individual backlog sections on click
* Fixed thinking support with Claude Opus 4.7/4.8
## Piebald v0.4.1
In this release we've fixed a few bugs with our interactive Claude Code implementation and the new sidebar.
## Piebald v0.4.0 - refreshed sidebar, chat statuses, smooth streaming, images from MCP tool calls
In this release we've **redesigned the sidebar**, added new **chat statuses**, **smooth streaming** configuration controls, and support for **MCP tools that return images**.
## New task-centric sidebar
We've redesigned the sidebar to simplify managing chats in multiple projects at once. Only projects with active chats are displayed; other projects are hidden by default and can be accessed via the dropdown at the top of the sidebar.
## Explicit chat lifecycle management
You can now explicitly mark chats as "Done" or "Abandoned", or move them to a per-project backlog. When you're done with a task, mark the chat as Done and it will disappear from the main sidebar, leaving only active tasks that you're working on in view.
## Smooth streaming (Pro)
We've added a beautiful smooth streaming effect for generated text. Regardless of latency or spikes, generated text will appear character-by-character or word-by-word in a easing motion. Tool calls are also streamed in smoothly. You can also configure an optional blur or fade animation with a custom speed.
Smooth streaming requires Piebald Pro.
## Support for MCP tool calls that return images
Piebald now supports MCP tool calls that return images, so you can now use Figma, Playwright, Chrome DevTools, and other tools to take screenshots or gather design context.
## Enhanced tag support
We now support project-specific tags in addition to existing global tags. We also support merging tags into each other; for example, if there are duplicates that both have chats. You can also now duplicate tags.
## Claude Code interactive
To keep Claude Pro/Max usage in Piebald working, we now run Claude Code interactively in the background without relying on the Agent SDK or `claude -p`. The solves a number of bugs that have arisen in recent Claude Code versions, and it should also route usage to your main subscription usage instead of the Agent SDK bucket, per the June 15th Agent SDK/`-p` usage allocation changes.
## Other
We've also fixed countless small bugs and added many small features.
* Added support for duplicating tags.
* Added support for merging one tag with another.
* Added support for tags defined on specific projects.
* Removed Piebald Pro gate from notification volume settings.
* Added a feature to automatically format and syntax-highlight JSON MCP tool call bodies.
* Added a feature to show the draft message for new untitled chats.
* Updated all OAuth flows to use device code authentication under web mode.
* Redesigned the About dialog.
* Added option to hide unchanged lines in Git diffs.
* Added an "Ignore" button to generation errors.
* Changed default font size from 18px to 16px.
* Added a button to toggle hidden files in the Code tab.
* Enhanced slash command search to match items even when you've only partially typed their names.
* Added an "Open Folder" item to the File menu.
* Enhanced the "Launch in Terminal" MCP server debugging feature to launch in the Piebald integrated terminal instead of an external one.
* Enhanced HTTP traffic viewer to automatically redact images to avoid duplicating large images.
* Added a button to preview Markdown files from the Code section.
* Added a dialog to confirm closing a terminal when it has a command running.
* Localized "Untitled Chat" title.
* Enhanced worktree creation functionality to use a dialog instead of a popover menu.
* Enhanced markdown rendering to display unsupported HTML as text.
* Fixed other bugs with model selection, auto-scroll, scrolling in diffs, Git worktrees, TLS error retrying, sign-in errors, integrated terminals, Anthropic-compatible APIs support, Claude Code support, `Grep` tool calls, reactions, Claude Code hooks, Markdown rendering, continuing, pausing, compaction, GitHub Copilot, subagents.
## Piebald v0.3.2
* Fixed command prompt window flashing on each hook invocation on Windows.
* Fixed `"continue": false` not being respected for all hooks.
* Fixed `additionalContext` in `SessionStart` hooks not being properly injected.
* Added `--version`/`-V` flags to Piebald binaries.
* Fixed a bug handling parallel tool calls in the Claude Code engine.
* Added support for `.github/copilot-instructions.md`.
## Piebald v0.3.1
* Added support for NVIDIA Nemotron's flavor of the Responses API with `response.reasoning_part.added` & `response.reasoning_part.done`.
* Made file edit diffs more compact.
* Fixed a bug launching Claude Code in certain directories.
* Fixed a bug when going from a subagent chat to the parent chat in some cases.
* Fixed bugs in the file browser UI.
* Fixed a bug where the last used of multiple terminals would be forgotten when switching away.
* Fixed a bug where empty messages sometimes weren't filtered out after conversion to the OpenAI completions format.
* Handled a bug with pasting images where the mime type as reported by the OS may be incorrect.
## Piebald v0.3.0 - Claude Code hooks & provider, chat sharing, usage/rate limit monitor, token count badge, Bedrock API keys
We've added a **Claude Code provider** that avoids direct Anthropic OAuth login and uses Claude Code under the hood, as well as **support for Claude Code hooks**, **cloud chat sharing**, **Claude, ChatGPT, and Gemini subscription usage/rate limit monitoring**, **a token count badge**, and **Bedrock API keys**.
## Claude Code provider
Our Claude provider now uses Claude Code under the hood, instead of calling the Claude.ai API directly. Since we're using Claude Code itself to make the requests, you can now be sure there's no risk of getting your Claude.ai account banned. (FWIW, we've never received a single report of an account ban due to use of Piebald.)
By default, Piebald will use your existing Claude Code installation, if any, by searching for `claude` on your PATH. If you have Claude Code installed in an unusual location, however, you can specify the path to the `claude` binary manually in your Claude Pro/Max provider settings. And if you don't have Claude Code installed, you can use Piebald to install the latest version and keep it up-to-date automatically.
## Claude Code's hooks
We've added support for Claude Code's hooks, so when you open a project that has a `.claude/hooks` and `.claude/settings.json`, the hooks will activate at the points you've configured.
We currently support the following Claude Code hooks: `PostCompact`, `PostToolUse`, `PostToolUseFailure`, `PreCompact`, `PreToolUse`, `SessionStart`, `Stop`, `StopFailure`, `SubagentStart`, `SubagentStop`, `UserPromptSubmit`.
We don't currently support the following hooks because they don't have direct equivalents in Piebald: `ConfigChange`, `CwdChanged`, `Elicitation`, `ElicitationResult`, `FileChanged`, `InstructionsLoaded`, `Notification`, `PermissionDenied`, `PermissionRequest`, `PostCompactResult`, `PostToolBatch`, `SessionEnd`, `Setup`, `TaskCompleted`, `TaskCreated`, `TeammateIdle`, `UserPromptExpansion`, `WorktreeCreate`, `WorktreeRemove`. However, please let us know if any these would be essential to you.
## Subscription usage limit monitor (Pro) & token count display
We've added two widgets to the chat top bar that show the number of tokens that your current chat is using and your current subscription usage, if you're using a Claude Pro/Max subscription, ChatGPT subscription, or a Google AI subscription.
## Chat sharing (Pro)
You can now share chats from Piebald! Click the ellipsis menu on a chat in the sidebar or chat titlebar and click **Share**. Just choose an expiration date and then copy the link and send it! Anyone with the link will be able to view the chat ([here's the chat in the video](https://app.piebald.ai/s/Ilx_sBYJoBNIQ0LMKlVeM?utm_source=0.3rn)).
## Passing a prompt from the command line
You can now pass a prompt to Piebald from the command line with an argument (e.g. `piebald /code/myfolder "Explore this project"`) or with a command line flag (e.g. `piebald --prompt "Add tests"`).
## Bedrock API keys
We now support Amazon Bedrock API keys. Go to **Settings → Providers → New Provider → Amazon Bedrock → API key** and paste your key. We support long-lived and short-lived keys.
## Other
* Added French, Portuguese, Korean, Turkish, and Italian translations.
* Removed Qwen.ai provider—[Alibaba have officially sunset the OAuth free tier](https://github.com/QwenLM/qwen-code/issues/3203).
* Rebuilt the `AskUserQuestion` tool to support multiple questions in one call, optional descriptions for the answers, and optional previews.
* Improved the web server token system so that you can open multiple tabs or windows of Piebald Web.
* Added DuckDuckGo in addition to Exa as a search engine for the `WebSearch` tool.
* Added a fourth plan approval option, **Approve and implement in new worktree**.
* Changed wording of generation errors from "Error during generation" to "Generation error".
* Emphasized preference for explicit user instruction in the `LaunchSubagent` tool description.
* Added the ability to configure the profile used for subagents launched in a particular chat.
* Added plan information to the window title on Linux like the custom titlebar on Windows and macOS.
* Added support for line and column numbers to AI file mention detection.
* Added web fetch and web search requests to HTTP traffic viewer.
* Added functionality to automatically cancel all generations on signout.
* Added functionality to automatically move down to the first diff in the selected file in the Git tab.
* Enhanced the `WriteFile` tool to automatically create directory trees when they don't already exist.
* Enhanced chat compaction to use a toast, not a dialog, to avoid blocking the whole app during compaction.
* Enhanced title generation and compaction to strip thinking blocks if thinking is enabled on the respective built-in profiles.
* Fixed Glama MCP count display.
* Added handling for the `RECITATION` stop reason in Gemini providers.
* Added handling for `response.failed`, `response.incomplete`, and `response.metadata` events in OpenAI providers with Response API.
* Enhanced `RunTerminalCommand` tool calls to return the first and last 10k characters instead of the first 20k.
* Made tool calls full width by default.
* Fixed a bug where DeepSeek reasoning wasn't passed back to their API, breaking DeepSeek v4 tool calling support.
* Added a feature to display Appeal and Verify links that are sometimes returned with Gemini/Antigravity error.
* Enhanced the `Grep` built-in tool to work with multiple space-separated search dirs (e.g. `backend/src frontend/src`).
* Fixed a bug where long provider names would overflow the provider card.
* Added automatic retry for intermittent client connection errors.
* Added functionality to automatically detect the name and command line of the currently executing process in a particular terminal and display them as the chat title and description.
* Made `RunTerminalCommand` tool calls automatically collapsed.
* Fixed a bug where codeblocks in admonitions weren't displayed properly.
* Improved handling of MCP servers that don't support CIMD or DCR.
* Enhanced error display for errors from APIs that use QuantumNous's NewAPI product.
* Fixed bugs with our OpenRouter Responses support.
* Fixed a bug where pressing Esc to close dialogs also stopped generation.
* Removed toast that appears when modifying settings in the chat generation config sidebar.
* Made tool call output truncation during chat compaction much more aggresive.
* Improved MCP server OAuth signin to use our hosted redirect URL (piebald.ai/desktop/redirect) for all MCP servers.
## Piebald v0.2.7 - bug fixes
* Piebald is now built on Linux ARM64 in addition to x64.
* Added support for Claude Opus 4.7.
* Fixed Qwen.ai OAuth tokens automatic refreshing.
* Fixed a bug where Claude via Antigravity couldn't call MCP tools without arguments.
* Fix latest Antigravity version detection.
* Updated Antigravity `claude-sonnet-4-6-thinking` to `claude-sonnet-4-6`.
* Redesigned the UI of the Code tab in the project sidebar slightly.
* Handle incompatibilities with OpenAI-"compatible" providers.
* Fixed error finish reason handling for OpenRouter response with upstream errors.
* Fixed a bug where @-mentions failed entirely when canonicalization of individual paths failed.
## Piebald v0.2.6 - bug fixes
* Fixed more chat crashing errors.
* Fixed "missing thinking" and "missing signature" errors with custom Anthropic providers.
* Fully updated Antigravity version.
* Fixed Antigravity error display.
* Added a confirmation dialog before disabling telemetry or error reporting.
* Added `/bug` slash command alias for opening the feedback submission dialog.
* Changed dialog overlay effect.
* Fixed provider selection bugs that occur after deleting a provider used by existing chats.
## Piebald v0.2.5 - default permission mode and bug fixes
In this release, we've added a feature for setting a default permission mode that new chats will use. We've also fixed several bugs.
* Added the ability to customize default permission mode used for new chats and renamed "Default" to "Read-only".
* Added Ctrl+-, Ctrl+=, and Ctrl+0 to control font size zoom.
* Added buttons to copy tool input and output .
* Added execution time to tool calls.
* Made the Chats, Terminals, and Code tab headers sticky so that they stay in view while scrolling the sidebar.
* Fixed a bug where branch tabs would overflow off the screen.
* Fixed a bug where skill slash commands weren't recognized after being pasted.
* Fixed a bug where creating a chat after deleting the last used provider would throw errors.
* Fixed a bug where non-image files (files not ending with .png, .jpg, .jpeg, .webp, or .gif) could be attached with the "Attach image" button.
* Fixed a bug where deleting a chat would switch you to another project.
* Improved error messages when MCP servers fail to start.
* Fixed the "Use" and "Start using" buttons when no project was active.
* Fixed a bug where the app would crash due to minor issues in our OpenAI Responses API support.
* Fixed title generation with ChatGPT providers.
* Fixed chat crashing errors.
* Implemented fixes for "Invalid request data" error when using Claude Max subscription.
* Implemented fixes for Gemini Code Assist support to reduce access suspension risk.
## Piebald v0.2.4 - bug fixes
* Fixed context notifications not showing on new messages.
* Added the number of chats in the worktree to the delete worktree dialog.
* Updated auto-approval rules to include all read-only tool calls, including those operating outside the current project's directory.
* Fixed Qwen.ai OAuth support by adding an empty system prompt when no system prompt is defined
* Added prompt caching support to Qwen.ai OAuth providers.
* Fixed Qwen.ai OAuth re-authentication and access token refreshing.
* Fixed automatic title generation being blocking until multi-step generation are finished.
* Fixed a bug where the sidebar would incorrectly mark chats as having draft prompts
* Added pre-validation to tool calls, so that obvious errors (e.g. an Edit tool call with `oldString` identical to `newString`) are auto-approved and fail instead of requiring manual approval.
* Fixed a bug where deleting the current chat's provider shows noisy errors.
* Fixed animation bug with the minimized feedback dialog.
* Added a setting (on by default) to expand tool calls, resulting in reduced flickering
* Added buttons alongside the jump-to-top and jump-to-bottom buttons for jumping up and down through messages.
* Fixed a bug with automatic empty chat cleanup.
* Fixed a bug when listing built-in slash commands.
* Made Glob/Grep tools properly respect `.gitignore`.
* Fixed a bug wher subagent chats weren't being trashed along with the parent chat.
## Piebald v0.2.3 - remote MCP headers, manual MCP OAuth configuration, and background color customization
We've added remote MCP headers and manual OAuth configuration (client ID, client secret, and callback port, like Claude Code), background color customization, and a few other small features and bug fixes.
## Manual MCP header and OAuth configuration
Some remote MCP servers, like [GitHub's](https://github.com/github/github-mcp-server), recommend using headers like the `Authentication: Bearer ...` to authenticate the server. Others, like [Slack's](https://docs.slack.dev/ai/slack-mcp-server/), require users to manually input a client ID, client secret, and callback port (authentication parameters that are required for a complete OAuth login process).
Piebald now supports both remote MCP headers and manually inputting client ID, client secret, and callback port:
## Background color customization
You can now customize the background color of the entire interface for light mode and dark mode. Go to **Settings → Appearance** and change the **Background Color** settings:
## Other
* Automatically minimize the feedback dialog when you click Submit.
* Added a new button to delete all trashed chats in a project.
* Changed the color for the AGENTS.md or CLAUDE.md context notification from red to blue to avoid it looking like an error.
* Added a copy button to file paths displayed in file read, write and edit tool calls.
* Added a button on toast notifications to close them.
* Fixed Qwen OAuth provider token refreshing.
* Fixed "bad request" error when using Qwen.ai OAuth.
* Fixed a bug when deleting worktrees.
* Cleaned terminal output of ANSI escape sequences before giving it to the model.
* Fixed a bug when a project that was a Git repo is no longer a Git repo.
* Made chats with stale "Pending your approval" status be automatically corrected.
## Piebald v0.2.2 - more bug fixes
Another release with lots more bug fixes:
* Added **Help → Check for Updates** menu
* Added setting **Chat Interface → Auto-scroll During Streaming**
* Fixed trashed subagent chats remaining in sidebar
* Fixed Ctrl+S and Cmd+S save shortcut in file editor
* Fixed handling of missing `choices` field in streaming error responses
* Added fold and unfold for unchanged diff regions
* Added support for loading skills from Claude Code plugins
* Fixed file clicking when terminal is fullscreen
* Fixed OpenAI handling of responses with blank token values
* Added a button to provider cards to make it easy to start using that provider
* Limited Git status items to 10k to keep the app from freezing
* Added a button to queued messages for sending immediately
* Correctly set chat status to Idle when a tool call is interrupted
* Fixed AI file mentions in markdown lists
* Added automatic exponential backoff and retry. Useful for providers with aggressive short-lived usage limits like Qwen and intermittent errors
* Clicking on projects that have multiple worktrees, all of which except the root worktree are inactive, will now take you directly into the root worktree, instead of taking you to the worktree listing view. If you want to go to the worktree listing view, you can use the new "View Worktrees" menu item in the
* Removed the warning that mentions Piebald v0.1.19 from provider cards
* Fixed a bug that occurs when reloading with empty chats
* Fixed a bug with the builtin `WebFetch` tool where fetching large web pages would crash the app
* Fixed synchronization of the select boxes under the message input and the select boxes in the Chat Settings sidebar
# Piebald v0.2.1 - Bug fixes
We're still working on features for subsequent releases, but this is a bug-fixes-only release.
* Made our Copilot support dynamically use completions/responses/messages API
* Made our Copilot support correctly list all available models
* Implemented several internal performance improvements
* Increased default MCP tool call timeout from 30s to 60s and made it configurabled
* Fixed a language glitch when reloading the app the app language customized
* Fixed bash `find -exec` comands incorrectly being auto-approved
* Added a `PIEBALD_DISABLE_ERROR_REPORTING` environment variable
* Added `~/.claude/commands` (old-style pre-skills Claude Code custom slash commands) and derivative `./.agents/commands` directories to skill search path
* Fixed backticks being included when copying portions of code blocks
* Made Glob/Grep tool calls cancelable
* Fixed regenerated and subsequent messages not displaying
* Fixed Zapier link
* Fixed Glama scrape count
* Added Ctrl+C, Ctrl+V, Ctrl+Shift+C, and Ctrl+Shift+V keyboard shortcuts for copying from and pasting into the terminal
* Disable compaction actions when the current chat is empty
* Show the jump-to-top/-bottom buttons during scrolling
* Corrected AGENTS.md context notification name in some cases
* Fix a sign-in error
* Fix a regex error in some browsers
* Fix a bug when deleting worktrees
* Show the Qwen model name instead of "coder-model"
* Fix a crash when using Qwen providers
* Sanitize unusual enums from MCP tool schemas for Gemini
* Fix compaction provider/model being hidden when auto-compact is disabled
## Piebald v0.2.0 - Integrated file browser, Git diff browser and terminal, Git worktrees, Qwen support, remote MCP servers, localization, message queuing, skills as slash commands, and interruptible tool calls
In Piebald v0.2.0 we've added an **integrated file browser, code editor, and integrated terminal**, and added support for **worktrees**, **skills as slash commands**, **message queuing**, **Qwen OAuth support**, **localization**, and **remote/HTTP MCP servers**!
## Integrated file browser, Git viewer, and code editor (Pro)
The sidebar in Piebald is now project-oriented instead of just chat-oriented, with each project getting its own randomly-generated colored avatar for easier identification, and a search box to filter projects and worktrees by name. This allows us to include an integrated file browser, Git viewer, and code editor, as well as an integrated terminal!
## Integrated terminal (Pro)
In addition to the file browser, Git viewer, and code editor, we've added an integrated terminal feature that you can use to run commands in the project directory.
## Git worktrees (Pro)
We now support creating and using Git worktrees within a project! You can create chats in specific worktrees, view/edit files, and run terminal commands in them.
## Skills as slash commands
Skills can now be invoked as slash commands in the chat input. All local skills in `.agents/skills` and global skills in `$HOME/.agents/skills` that are automatically loaded into new chats will also be available via `/`.
## Message queuing (Pro)
When you want to send a message while a previous one is still generating a response, you can now choose to interrupt it or queue it in two different modes: send right away, and follow-up.
* "Send right away" will not interrupt the current generation but rather send the message as soon as the current message is done being generated, before the model has the opportunity to respond to tool call output.
* "Follow-up" will queue the message to be sent after the current task is complete, including all tool calls.
## Qwen OAuth support
You can now log in with your Qwen.ai account via OAuth, similar to Qwen Code. The free tier includes 1,000 requests per day.
## Localization
We've translated the UI into 4 languages: Chinese (Simplified), German, Russian, and Spanish. You can change the language in Settings → Language.
## Remote/HTTP MCP servers
We now support remote HTTP MCP servers! To add an HTTP MCP server, go to Settings → MCP Servers → Add → Add Server, select "HTTP" as the transport type, and enter the URL of the server.
## Tool calls are now interruptible
You can now interrupt tool calls at any time, via `esc` or by clicking the interrupt button in the chat input box or on an individual tool call.
## Other
* We added a quick start section that you can use to quickly sign in to a supported OAuth provider or paste an API key
* Many more read-only bash commands are now auto-approved
* When a chat is automatically-compacted, generation is automatically resumed in the new chat
* We've added new buttons to jump to the top and bottom of the chat
* We've added a new setting to automatically append the duration of a terminal command/sub agent to the tool's output
* We've fixed support for customizing the system prompt when using OpenAI Responses API providers
* Subagents are now automatically approved
* You can now toggle word wrap for diff views
* We've updated the title generation prompt to make titles shorter and more helpful
* Title generation can now be postponed by the model if the conversation is not yet ready for a title
* Subagents will no longer send notifications when they're complete
* The `WebFetch` tool is now much faster and more accurate
We also fixed a number of bugs around authentication, editing profiles, message interruption, plan approval, provider icons, tool call status, regeneration, responsiveness, and much more.
## Next
We're working on hooks, first-class support for many more providers, accurate token usage metrics, context editing, syncing & storage with Piebald Cloud, and subscription provider rate limit monitoring. We're also planning to soon work on worktree creation scripts, integrated LSP support, importing chats from Claude Code, OpenCode, etc., a stats page, and more.
## Piebald v0.1.22 - VS Code theme importing for code blocks and 'Esc' to interupt generation
In this release, we've added VS Code theme importing for code blocks, branch renaming, and numerous UI improvements and bug fixes.
## VS Code theme importing for code blocks (Pro)
If you're on Piebald Pro, you can now import any theme from VS Code to use for code block syntax highlighting.
1. In VS Code, open the command palette via Cmd/Ctrl + Shift + P
2. Choose **Developer: Generate Color Theme From Current Settings**.
3. Copy the resulting JSON
4. In Piebald, go to **Settings → Appearance** and scroll down to **Code Block Themes**
5. Click **Import VS Code Theme**
6. Paste the JSON, name the theme, choose whether it's light or dark, and click **Import**
7. Select your theme from the **Light Mode** or **Dark Mode** select boxes
## Branch renaming (Pro)
You can now rename branches to more descriptive names than the default "Branch 1", "Branch 2", etc. Hover over the branch name and click "Rename"
## Text selection uses accent color
The background color for text selection is now overridden by your customizable accent color:
## Hit 'Esc' to interrupt generation
In addition to clicking the red stop button in the input box, you can now hit the Esc key while a message is being generated to interrupt it:
## Other
We've also polished the UI and fixed many bugs:
* "Generating..." will now be shown while titles are generating, for clarity.
* There's a new "Refresh now" link in OAuth providers in the settings if you need to refresh the OAuth tokens now.
* The `/compact` slash command can now take custom instructions, bypassing the confirmation dialog.
* OAuth errors like expired/invalid tokens will have a "Re-authenticate" button inline for easy refreshing.
* We updated the icons for providers and provider creation methods.
* There's a new "Question" type of feedback report.
* The chat count is now shown for folders in compact mode.
* Subagent runs and terminal commands now have run duration appended to the output, configurable via a setting.
* Thinking blocks can be configured to be automatically collapsed when they're done generating.
* The `RunTerminalCommand` builtin tool's description is dynamically updated to include the type of shell you've configured.
* "Overloaded" and "Internal server error" errors are now elaborated with more explanation.
* Chats in the sidebar are grayed out when empty to indicate that leaving them will auto-delete them.
And we fixed bugs with MiniMax in OpenRouter, missing stop reason for Anthropic, terminal auto-scrolling, `Search` tool output & format, context notifications, subagent status, OAuth refreshing, toast notifications, long chat names, and `localStorage` usage.
## Piebald v0.1.21 - Web mode, accent color customization, tool call re-execution (Pro) and slash commands
## Web mode
You can now use Piebald in your browser instead of your desktop. If you're familiar with Jupyter notebooks, the process is similar—run `piebald-web`/`piebald-web.exe` in the terminal and then go to [http://localhost:7000](http://localhost:7000). If you'd like to use a different port, set `PIEBALD_WEB_PORT` to any valid port number that's not already in use and re-run `piebald-web`.
This is especially useful on Linux where Tauri apps may not perform well in some desktop environments.
## Customize accent color
You can now change Piebald's accent color from the default orange to any color you'd like! There's both a light and dark mode accent color.
## Tool call re-execution (Pro)
You can now re-execute individual tool calls made by the model. This can be useful if the results are stale, for example you had the AI start something but forgot to switch to a new branch: you can pause the loop, switch to the new branch, and re-execute the `git status` or whatever the model did.
This means that you don't have to tell the AI to re-run the commands, which wastes context, or regenerate the entire response from the start, which may result in a different series of tools being called due to LLMs' non-deterministic nature.
Tool call re-execution requires [Piebald Pro](https://piebald.ai/pricing).
## Slash commands
Piebald now features built-in slash commands! Type `/` in the input box to see a list of them. You can perform common actions like pausing, compacting, and reporting feedback right from the input box without having to click around to the right menu item.
Displaying loaded skills as slash commands is not yet supported but will be soon.
## Ctrl+R prompt search (Pro)
You can now use Ctrl+R when the message input box is focused to trigger **reverse incremental prompt search**. Hit Ctrl+R, type part of a past prompt you've sent, and it will automatically replace the current context of the input, which you can then revise or send it directly after hitting Esc. (If you delete your query without pressing Esc it will restore whatever original input, if any, you had.)
This feature is ubiquitous in terminal shells like bash, zsh, and PowerShell—bash shows `(reverse-i-search)` and PowerShell shows `bck-i-search`, for example.
Ctrl+R to show reverse incremental search is only available in [Piebald Pro](https://piebald.ai/pricing).
## Warning for active sessions before closing the app (Pro)
When you close the app, if any chats are still active, a dialog will be opened listing all the active chats and giving you an option to pause, interrupt, or wait for them before closing the app.
## Other
* We've added a new setting to automatically collapse thinking blocks during streaming if you don't want to see the model's reasoning while it's working: **Settings → Chat Interface → Collapse Thinking by Default**.
* Whenever an unexpected error notification occurs, there will now be a "Report..." button to open a pre-filled feedback dialog so that you can report the error.
* There's a new button in the chat topbar when you're in a subagent chat that lets you go back to the parent chat, automatically scrolling to the precise location in the parent chat where the subagent was launched.
* We also fixed a bug users were experiencing when using 9router, as well as bugs with Copilot, Gemini Code Assist prompt caching/rate limiting, OpenAI token refreshing, subagent finish race conditions, chats not in a directory, pausing, pasting text, image viewing, tool call expansion, emoji fonts, codeblock themes, long code spans and tool calls being clipped, and tooltips.
## Piebald v0.1.20 - Image support, subagent model customization, monospace font customization
In this release we've added image support, raw markdown mode, monospace font customization, subagent model customization, and OAuth provider token editing!
## Image support
Piebald now has first class support for vision models that can take images as input, like Claude, GPT-5, and Gemini. Image input is also supported when using Amazon Bedrock. You can upload an image from disk via file picker, drag & drop an image from your desktop, or paste a screenshot from your clipboard. The images will be queued and attached to your next message.
## Setting to customize the monospace font
In addition to the main app font, you can now customize the monospaced font used for inline code and code blocks, in **Settings → Appearance → Monospace Font Family**.
## Customizing the model and profile before approving subagents
When the model launches a subagent, you now have the option to change the model it uses before it starts:
## Raw markdown mode
Pro users can now turn on raw markdown mode, where messages' markdown content is displayed as plain text with syntax highlighting instead of being rendered as HTML:
## Edit OAuth providers' tokens
You can now view, and even edit, the OAuth access and refresh tokens for OAuth providers like Claude Max:
## Other
We also fixed bugs in our Copilot support, our Antigravity support, reactions, clickable file mentions, tooltips, custom models, thinking in OpenAI completions providers, tours, regeneration, and markdown rendering,
## Piebald v0.1.19 - message reactions, OAuth provider details, copy selection as markdown, GitHub Copilot
In v0.1.19 we've added support for GitHub Copilot, message reactions, details for OAuth providers, and copying a selection of text markdown!
## Message reactions
You can now use emojis to react to the model's messages, and it can react to yours! The model will not use reactions in a chat unless you explicitly use one yourself—this will be configurable in the future. The model can only react to your most recent message, and when the it does, the emoji will be displayed on the message:
## Details for OAuth providers
When you use OAuth subscription providers in Piebald like Claude Max, you can now see account details as returned by the provider during authentication:
## Copying text selections as markdown
When you select and copy a portion of the model's reply, any markdown included in your selection will be preserved and copied to your clipboard. It's fully preserved when you quote a selection as well:
## Onboarding tours
To help new users get starting in the app, we've added some onboarding tours. If you've already used the functionality that the tours demo, you won't see them, but you can reset them in Settings → General → Reset Guided Tours.
## GitHub Copilot support
We now support using your GitHub Copilot subscription in Piebald. Go to **Settings → Providers → New Provider → GitHub Copilot → Sign-in**, copy the code, sign in to GitHub if you're not signed in already, and then enter the code.
## Other
We also—
* Added "continue" link when the model's response ends with a colon but no tool call, e.g. "Let me read the file:" in case it seemed to "forget" to call a tool (Pro)
* Added line count information to the end of tool call output (like ReadFile) when it's truncated, making the reading of large files much simpler for the model
* Added descriptions to chat tags to help models select existing tags more accurately
* Made subagents allowed in Plan mode
* Fixed bugs around compaction and title generation for ChatGPT providers, tool call auto-approval UI, macOS titlebar, Anthropic thinking blocks, custom override fields, and multibyte characters.
## Up next
We're working on Git worktree support, image/vision support, context editing, an integrated file browser, code editor, and terminal, web mode, and storage and syncing of data with Piebald Cloud. After that we'll be adding support for many new providers, accurate token usage metrics, an LLM usage stats page, and local models.
## Piebald v0.1.18 - enhanced sidebar, app-wide font customization, OpenAI Responses configuration
In this version we've added subagents, enhanced the chat sidebar, added app-wide font customization, added OpenAI Responses provider configuration, and added a quick feedback dialog to instantly create feature requests and bug reports with debugging data attached.
# Subagents
Piebald now supports **subagents**. Subagents allow the model to perform exploration/research/planning tasks and lots of mechanical edits in an isolated context without cluttering the main chat's context.
By default, a live preview of the subagent chat is shown in the primary conversation window, but you can open it in its own full view if you'd like to see its prompt, progress, and output. And since Piebald stores subagents chats just like any other chat, you can even send subsequent messages in it after it's finished!
# Sidebar enhancements: hiding old chats, compact mode, smooth animations
We now automatically hide chats older than 3 days. You can customize that threshold in the settings—go to **Settings → General → Recent Chat Threshold**.
We also added a new **compact mode** for chats in the sidebar. It will hide tags and date information, leaving only message count, status, and title, making the sidebar much more dense. You can enable/disable compact mode via an icon at the top of the sidebar and in **Settings → General → Compact Sidebar**.
We also added smooth animations to the sidebar for a more polished feel.
# App-wide font customization
You can now change the **font size** and **font family** of the entire app's UI for customization and accessibility.
For the font size, you can choose between 5px and 25px, which allows you to use Piebald conveniently on very small screens by zooming out, and on very large screens by zooming in.
For the font family, you can select any font installed on the system, or browse through 2000+ Google Fonts and instantly use any without having to install them first.
# OpenAI Responses configuration
You can now configure reasoning effort, parallel tool calls, and more for chats that use OpenAI Responses API providers. You can also use GPT-5(.x)-specific parameters like text verbosity:
# Report feedback
You can now report quick feedback right inside the app! No need to report issues [on GitHub](https://github.com/Piebald-AI/piebald-issues/issues/new) or [in Discord](https://piebald.ai/discord) anymore, although you're still welcome to.
You can report 3 types of feedback: **feature** (new feature requests), **bugs** (report bugs), and **enhancements** (misc improvements that aren't full features). To report feedback, click the smiley icon in the small sidebar, above your profile picture. A floating panel will come up that lets you write a description of the bug/request.
You can also choose to automatically attach an auto-generated **screenshot** of the app and all the contents of the current chat to your request. This is **highly recommended** for bug reports because it will make it very simple for us to investigate and solve issues you encounter during a chat.
# Other
We've fixed several bugs as well:
* Fixed a streaming flickering bug
* Enhanced Google tool call support
* Added native menu items on macOS
* Fixed stuck "streaming..." indicator for OpenAI providers
* Truncated very long active TODO item names
* Fixed @-mention and newline behavior
* Fixed a bug with unsetting override config
* Expanded tool calls when they're not auto-approved
# Next up
We're working on Git worktree support, context editing, an integrated file browser, code editor, and terminal, web mode, and storage and syncing of data with Piebald Cloud. After that we'll be adding support for model reactions, many new providers, accurate token usage metrics, an LLM usage stats page, and local models.
## Piebald v0.1.17 - Interactive terminal commands & streamed tool calls
Piebald v0.1.17 is out with interactive terminal commands and streamed tool calls.
## Live, interactive terminal commands
We now show a real terminal when the model calls a terminal command using the builtin `RunTerminalCommand` tool, instead of capturing the output and displaying it at the end. This will show command output live as it's produced, with colors and all other ANSI escape codes used to produce attractive output. Additionally, this lets this model start interactive commands, which will wait for you to enter your input directly in the terminal.
## Streamed tool calls
Piebald now streams tool calls in real time instead of buffering them until they're finished streaming. This means that you'll see tool calls the instance the model starts generating them, and you'll see the entire input streamed as well. The result is that the agentic loop over all feels noticeably faster.
## Assistant message quoting
We've also added assistant message quoting—select some text and a small "Quote" menu will appear. Clicking it will copy the selected text into the message input as a markdown blockquote:
## Other
* `AskUserQuestion` tool calls are now properly not automatically approved in YOLO mode—their entire purpose is to solicit user input and YOLO mode was preventing them from being able to get that input by automatically approving them with empty answers.
* We also fixed some bugs in auto-scrolling.
## Piebald v0.1.16 - Redesigned message action buttons & Claude Opus 4.6
We've redesigned message action buttons (Copy, Edit, Delete, etc.) and added support for Claude Opus 4.6 and GPT 5.3 Codex.
## Redesigned message action buttons
Previously, message action buttons (Copy, Edit, Delete, etc.) were large and hard to see against the messages background, and when the viewport was shrunk they could sometimes disrupt the UI. Now they take up much less space and float over message bounding boxes. We also added a hover background to improve the contrast between messages.
## Claude Opus 4.6
We also added complete support for Claude Opus 4.6 and its new adaptive thinking/max thinking effort settings.
## New Claude/ChatGPT subscription models will be available instantly from now on
Up till now, the list of models that you could use with Claude and ChatGPT subscriptions had to be hard-coded in the app. However, recently there are new APIs available that return the list of models usable with those subscriptions. This means that you'll be able to use the latest Anthropic and OpenIA models with your subscriptions as soon as they're released, instead of waiting for us to release a new update.
## Piebald v0.1.15 - Bug fixes (new folder picker, search query with hyphens, update dialog)
In this release, we've fixed a few small bugs:
* In some scenarios (e.g. on macOS), the "Date Modified" column in the new folder picker wasn't wide enough for the date, causing the date in every row to wrap to another line.
* Fixed a small issue with searching when the search query contains hyphens (e.g. `hello-world`).
* Made the text in the "A new version is available" dialog smaller to allow more text to be displayed without scrolling.
## Piebald v0.1.14 - Antigravity subscription, native file picker
In this release, we've added a **native** file picker matching Piebald's look and feel, and **experimental support for Google Antigravity subscriptions**.
## Google Antigravity subscriptions (Experimental)
You can now use Google Antigravity subscriptions for agentic development. Go to **Settings → Providers → New Provider**, login with your Antigravity subscription, and then select a model.
Using Google Antigravity subscriptions outside of Antigravity may violate Google's terms of service, and **your Google/Antigravity account may be banned** (especially when used with newly created Google accounts or accounts newly subscribed to Google AI Pro or Ultra).
By using this integration, you acknowledge that you assume all associated risks.
As a result of this, we've performed limited testing of our Antigravity integration, and while we've been careful to ensure parity with other direct Antigravity login solutions, we may have some things wrong. If you run into a bug, please don't hesitate to immediately [report it](https://github.com/Piebald-AI/piebald-issues/issues/new)!
## Custom Open Folder dialog
We've introduced a new Open Folder dialog that matches the overall look and feel of Piebald:
You can also return to the native OS dialog if you prefer via the link in the bottom-left corner and the settings.
## Other
We've also fixed a few bugs:
* The dropdown that appears when you mention a file using `@` now grows to maximum width and is horizontally scrollable.
* Fixed a bug in the markdown renderer where HTML tags outputted in code blocks were incorrectly parsed into UI elements.
* Fixed a small theming glitch with the @pierre/diffs diffs rendering.
And a few small features:
* The dialog detailing a new release now automatically appears when Piebald sees a new release of the app.
* Providers can now be created with empty API keys. Useful when testing providers and for local/custom model servers.
## Piebald v0.1.13 - Branching
In this release we've introduced **chat branching**!
## Chat branching (Pro)
You can now conduct multiple sub-conversation/threads in the same chat with **chat branching**. Also known as forking, chat branching allows you to fork/branch the conversation at any user or AI message at any point in the conversation.
You can branch by replying to a previous message, or by editing & regenerating an existing message. See [the docs for branching](https://docs.piebald.ai/features/chat-experience/branching) for more details.
## Quickly switch between rich text and markdown
We've added a little button to quickly switch between rich text and markdown. This only applies for the current chat and is reset to your default setting in **Settings → General → Rich-Text Editor**.
You can disable the button via **Settings → General → Show Rich Text Mode Switcher**.
## Other
We've also fixed several significant bugs pertaining to tool call approval and chat history disappearing, Gemini Code Assist caching, markdown parsing, streaming, the `AskUserQuestion` tool, and payment handling.
## Next up
Sub-agents, context editing, live streaming of terminal command output, integrated file browser & code editor, Git worktree management, response rewriting, web mode.
## Piebald v0.1.12 - portable Windows installation & direct sign-in to AI provider subscriptions
In Piebald v0.1.12 we've added portable distribution for Windows users and and direct sign-in to AI provider subscriptions.
## Direct sign-in to AI provider subscriptions
You can now sign-in to your Claude, ChatGPT, and Google AI subscriptions directly in Piebald without having to sign in Claude Code/Codex/Gemini CLI beforehand and import the credentials from them. We're working on merging the option to import credentials from those tools into the direct sign in flow to save you a sign in if you already have valid credentials with those tools.
You can even sign in to multiple subscriptions from the same provider (e.g. multiple Claude.ai accounts with Claude Max) and use them independently!
## Portable Distribution
We now offer two methods of installation for Windows users: an installer and a **portable** ZIP file. The ZIP file ([`piebald-portable-windows-x64.zip`](https://github.com/Piebald-AI/piebald-issues/releases/latest/download/piebald-portable-windows-x64.zip)) contains `piebald.exe` ready to use. Use the portable distribution if you can't or don't want to run the installer.
## Up next
Chat branching, context editing, live streaming of terminal command output, subagents, response rewriting, Git worktree support, web mode.
## Piebald v0.1.11 - desktop notifications & Amazon Bedrock
In this release, per user requests, we've added desktop notifications with sounds and support for Amazon Bedrock.
## Desktop notifications
Whenever the model finishes generation or calls a tool that blocks while it's waiting for your approval, you can now get notified immediately via desktop notifications on macOS, Windows, and Linux. A sound can also be played with the notification, and clicking on the notification will bring you right into the specific chat. Additionally, if you're on the Pro plan, you can choose from 30+ extra sounds.
## Amazon Bedrock
You can now use all text-based models available via Amazon Bedrock (Claude, Nova, OSS models, etc.) in Piebald. You can source credentials from the environment (env vars, profile, shared creds, EC2 role, SSO), or manually input an access key ID and a secret access key.
Different models require different configuration, so check out [the docs for our Amazon Bedrock integation](https://docs.piebald.ai/providers/amazon-bedrock) for more information.
## Other
We've also
* Updated Google AI and Claude Pro/Max model list
* Moved the in-app toast notifications from the bottom-right to the top-right corner
* Fixed clickable file reference flickering during streaming
## Next up
Chat branching, OAuth login with subscription providers like Claude Pro/Max, context editing, live streaming of terminal command output, sub agents, response rewriting, Git worktree support, web mode.
## Piebald v0.1.10 - pausing the agentic loop, AGENTS.md, AI asking questions
In v0.1.10 we've added chat pausing, icons next to clickable file references, an `AskUserQuestion` tools, support for `AGENTS.md`, and the option to use Diffs instead of Monaco editor.
## Pausing the agentic loop (Pro)
You can now **pause** the agentic loop inside chats. Agentic AI tools work by generating a response for the given context, handling any tool calls in the response, appending the response to the conversation, generating another response, and repeating. Piebald now allows you to gracefully pause and resume that loop without interrupting a generation.
Here's a screenshot, where a read-only command that would normally be automatically approved is pending manual approval because the chat is paused. You can either manually approve it and then click the Continue button to generate one response, or click Unpause to resume the agentic loop, automatically approving the tool call as usual and generating subsequent responses.
Pausing and resuming the agentic loop requires [Piebald Pro](https://piebald.ai/pricing).
## Icons next to clickable file references (Pro)
If you have Piebald Pro, files mentioned by the AI will automatically be made clickable, and will open in the default app for the file type. Now a colored file type icon will show next to them:
Clickable file references requires [Piebald Pro](https://piebald.ai/pricing).
## Using Diffs instead of Monaco editor (Pro)
You can now use [@pierre/diffs](https://diffs.com/) as an alternative to [Monaco editor](https://github.com/microsoft/monaco-editor) for viewing diffs when the AI creates or modifies files.
| | Screenshot |
| ---------- | -------------------------------------------------------------- |
| **Diffs** |
|
| **Monaco** |
|
Customizing the diff viewer requires [Piebald Pro](https://piebald.ai/pricing).
## AGENTS.md
Piebald now automatically reads `AGENTS.md` in the current directory:
## `AskUserQuestion` built-in tool
The model can now ask you questions with a dedicated UI using the new built-in `AskUserQuestion` tool. Currently it only supports asking one question at a time, but we'll remove this restriction in a later version.
## Piebald v0.1.9 - customizing command execution shell, filter chats by tag, Pro trial
In v0.1.9 we've added several new features: customizing the shell used for running commands, filtering chats by tag, GH-flavored callout blocks, and support for **Pro trials.**
## Customizing the shell used for terminal commands
You can now control which shell is used when the model executes terminal commands. By default, `sh` is used on macOS and Linux and `cmd.exe` is used on Windows, but you can use `bash` and `zsh` on macOS and Linux and Windows PowerShell and Git Bash on Windows. You can also specify a custom command to run in order to use custom shells e.g. `fish -c {command}`. Go to **Settings → Built-in Tools → Terminal Shell:**
## Pro trial
You can now try Piebald Pro for free for 14 days! Go to [https://piebald.ai/pricing](https://piebald.ai/pricing) and click **Start a free trial** on the Pro plan. You'll be redirected to sign in or create an account and then you'll have Piebald Pro access for 2 weeks. After that you'll need to purchase Pro or be downgraded to Basic. Starting a Pro trial doesn't require a credit card.
## Filtering chats by tags (Pro)
If you have tags assigned to your chats, you can now temporarily filter chats by a specific set of tags. Click the **Filter** icon in the top-right corner of the chat sidebar, and select one or more tags to filter by.
If you don't have any tags created (go to Settings → Chat Tags), the filter icon won't be visible.
Chat tags require [Piebald Pro](https://piebald.ai/pricing).
## Support for GitHub-flavored alert/callout blocks (Pro)
We now support GitHub-flavored alert/callout/admonition blocks (see [here](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts)) when rendering markdown:
The syntax is as following, where `NOTE` can be one of `NOTE`, `TIP`, `IMPORTANT`, `WARNING`, or `CAUTION`:
```
> [!NOTE]
> This is a **note.**
```
Callout/admonition blocks only render in [Piebald Pro](https://piebald.ai/pricing).
## Clickable file path references show contents on hover (Pro)
When you hover over a file path that's been highlighted, its contents will be loaded and displayed in a popup:
File paths being automatically detected and made clickable requires [Piebald Pro](https://piebald.ai/pricing).
## Other
We also added several smaller features—
* There's now a button to collapse all open folders in the sidebar (the screenshot of tag filtering above shows it).
* The "Help" menu now contains many useful links.
* We improved agentic performance by making both message generation and tool call execution parallel—previously it was just concurrent.
* And we fixed a lot of bugs.
## Next up
Chat pausing, chat branching, context editing, response rewriting, filter chats by tags, OAuth login to subscription providers, Git worktree support.
## Piebald v0.1.8 - active chats view & highlighting referenced file paths
In v0.1.8 we added a feature to help you quickly see chats that need your attention, and a feature to highlight files that that AI referenced.
## Highlighting files referenced by the AI ([Pro](https://piebald.ai/pricing))
Whenever the AI outputs a path to a file or folder that exists on disk, it will be highlighted and clickable. Clicking on it will open it in the default app for the file type, or your file browser if it's a directory:
We plan to make enhance this with file type icons and by integrating it into our upcoming integrated file browser and code editor.
Highlighting referenced files requires [Piebald Pro](https://piebald.ai/pricing).
## "Active chats" view
If you have a lot of chats, it can be hard to navigate to find which ones you need. We're working on an overhaul of chat organization with more flexibility, but in the meantime we've added an "Active Chats" view at the top of the chat sidebar that shows all the chats that are in progress or need your attention:
This feature is enabled by default. You can disable it via **Settings → General → Show Active Chats Section.**
## Other
We also made the app remember its last window position and size when you reopen it.
We fixed several bugs, including one that made API key providers difficult to create and one that broke importing existing Claude Pro/Max credentials from Claude Code for older versions.
## Next
Chat pausing, chat branching, response rewriting, filter chats by tags, OAuth login to subscription providers, Git worktree support.
## Piebald v0.1.7 - chat relocation & duplication
In v0.1.7 we added two features for chat management: **chat duplication & relocation**.
## Relocating chats (Pro)
Click the dropdown menu on chats in the sidebar and you'll be presented with a **Relocate** option. It will open up a folder browser and after you select a new location, it will configure that chat to run tool calls in that directory. It will also rewrite existing messages, tool call inputs/outputs, and context notifications to point to the new directory.
You can also relocate the chat via the config sidebar if you change the path manually:
Chat relocation requires [Piebald Pro](https://piebald.ai/pricing).
## Duplicating chats (Pro)
In the same dropdown there's now a **Duplicate** option. It'll duplicate the chat with all its messages and tool calls in the exact same state, as well as any draft prompt you're still writing, any tags you've assign it, and any custom config you've set on it.
Chat duplication requires [Piebald Pro](https://piebald.ai/pricing).
## Other
A few other things:
* We added support for Claude Opus 4.5's **effort** parameter, which you can configure in the config sidebar under **Overrides → Anthropic Overrides.**
* We made HTTP traffic retention enabled by default, and existing users who have it disabled will get a notification on app startup if the app's data file is taking up >50 MB.
* We also enhanced the styling for thinking blocks:
| before | after |
| --------------------------------------------------- | --------------------------------------------------- |
|
|
|
# Next
Automatically linking file paths mentioned in the AI's response, chat pausing, chat branching, response rewriting, OAuth login to subscription providers, Git worktree support.
## Piebald v0.1.6 - chat tags, continuation, web fetch
In this release we added `web_fetch`, two new Pro features, and a number of bug fixes.
## Automatic Chat Tagging (Pro)
You can now create **custom tags** ("labels" in GitHub/GitLab lingo) to assign to chats, and the automatic title generation process will also **automatically suggest** existing tags, and if configured, **new tags** for chats:
Having tags on chats requires Piebald Pro.
## Continuation (Pro)
There's now a **continue** button next to the **send** button in the bottom-right corner of the input box. It's the equivalent of sending a "continue" message to the model, but instead of adding a dummy message, it just re-sends the current chat history to the provider exactly as is. It's useful for when you accidentally interrupt the AI, or it returns a response but forgets to call tools:
Continuation requires Piebald Pro.
## `web_fetch` builtin tool
We added a `web_fetch` builtin tool—a supplement to the `web_search` tool we added in v0.1.5—so that the model can directly read URLs.
## Other
We also removed the `builtin-agentic-tools__` prefix for builtin tools, so smaller models like Haiku 4.5 will hallucinate them much less frequently, and fewer tokens will be used.
And finally, we fixed bugs around error handling, editing, pasting text, cancelling, chat status, tool call output truncation, keyboard shortcuts, and scrolling.
## Next up
We're working on chat pausing/duplication/relocation, branching, response rewriting, context editing, direct OAuth login to Claude/ChatGPT/Google AI subscription, and Git worktree support.
## Piebald v0.1.5 - web search, HTTP traffic retention, log file
This release we've introduced a `web_search` tool, date-/count-based HTTP traffic log retention, a log file for debugging Piebald errors, and several smaller features and improvements.
## Web search
We've implemented a tool for the model to use to search the web, `web_search`. We'll also be releasing a `web_fetch` tool in the next version.
## HTTP traffic retention (Pro)
With Piebald Pro, you can record all of the HTTP traffic performed by Piebald when interfacing with AI provider APIs to inspect their contents, investigate context issues, and learn about how the provider APIs work.
The logs are very verbose, however, and can pile up quickly if you use Piebald heavily, so we added a feature where you can configure a maximum number of logs to retain and a maximum age. For example, you can set the count to 5 to only keep the last 5 logs, and the date to 1 to only keep recent logs.
## "Draft prompt partially written" (Pro)
There's a new status displayed in the sidebar for sessions that have a draft prompt written up but not sent yet. It displays as pink with the text "Draft prompt partially written:"
This feature is available on the Piebald Pro plan.
## Log File
We now write logs to a file named after the current date, e.g. `2025-12-29.log`, and they're located in Piebald's app data directory, which differs by platform:
* **macOS:** `~/Library/Application Support/piebald/logs`
* **Windows:** `%USERPROFILE%\AppData\Roaming\piebald\logs`
* **Linux:** `~/.local/share/piebald/logs`
## Other
We've added several smaller features as well:
* The `read_file` tool, when called with a path to a directory instead of a file, now lists the directory's contents instead of throwing an error. We've observed Claude Haiku 4.5 frequently trying to do this.
* Hidden files are now shown in the file @-mentioning dropdown. We also plan to make this configurable.
* Images displayed in the release notes viewer are now slightly rounded on the corners.
* The app now automatically checks for updates every 3 hours.
Plus **16** bug fixes and optimizations.
## Next up
We're working on web fetch, automatic chat tagging, branching, response rewriting, logging in to provider subscriptions, and worktree/Git integration, and we hope to have some of these major features out this week!
## Piebald v0.1.4 - file @-mentioning, rich text editor, agent skills
Today we're releasing Piebald v0.1.4, and we've got 3 significant features to share: **file @-mentioning**, a **rich text editor**, and support for [**agent skills**](https://agentskills.io/home).
## File @-Mentioning
Now you can mention files (and directories) in your chat to have them automatically read for the model, which can speed up the response time by eliminating round-trips to the inference provider and back. Here's a screenshot:
## Rich-Text Editor
You can also now use a rich text editor to write messages, if you don't prefer using markdown:
It's disabled by default. Enable it in **Settings → General → Rich-Text Editor.** You can turn it on or off even with draft messages unsent—they'll automatically be converted to/from markdown.
## Agent Skills
We now support the new [Agent Skills](https://agentskills.io/) standard. Piebald will automatically discover global skills in `~/.claude/skills` and per-project skills in `./.claude/skills`. We're supporting Claude Code's skill storage structure, being the most common, to make it easier to get started quickly; all of your existing skills should work in Piebald out of the box with no additional setup. The default skills locations for other tools like Cursor, Codex, and OpenCode will be supported soon.
Here's a screenshot of skills working in Piebald:
## Other
We also added a little button on plans proposed by the AI that lets you copy the plan to your clipboard—useful to share or send to a new chat. (Pro users only.)
## Next Up
We're working on **web search functionality**, powerful **branching** and **response rewriting** features, and support for logging in directly to provider subscriptions like **Claude Max**, **ChatGPT**, **Google AI**, and **GitHub Copilot**. We're also going to be adding support for many **more providers** shortly.
## Piebald v0.1.3 - MCP server/tool enablement controls, chat status in the sidebar
In **v0.1.3** we added **controls to disable specific MCP servers/tools**, and made it much easier to **understand the state of chats from the sidebar:**
Now you'll see whether any chats are working, have finished working, or are waiting for tool call approval:
And you can enable and disable specific MCP servers and individual tools. Here's an example, where we have only `propose_plan_to_user` and `run_terminal_command` enabled, and those are the only ones the model gets:
We also added the ability to specify **custom instructions** when manually compaction a chat, we added the model's **currently active TODO** above the input box, and we added **GPT-5.2-Codex** and **Gemini 3 Flash** to our ChatGPT and Google AI subscription support.
Lastly we fixed bugs in our Anthropic and OpenAI responses engines, a bug with reporting provider errors, and made the release notes dialog a bit bigger and scrollable.
**Next up:** We're working on file **@-mentions, branching, automatic chat tagging,** and **response rewriting,** among other things, and we'll be shipping more features in the next release!
## Piebald v0.1.2 - Token speed meter, repaired Windows support, bug fixes
In this release we've fixed several bugs and introduced a small token speed meter that will show above the message input when a response is streaming. It will show an estimated tokens-per-second speed an estimated total number of tokens generated for the current message:
The following bugs are now fixed:
* **File editing on Windows:** On Windows, when the model tried to edit a file, it would fail if the file used Windows CRLF line endings (`\r\n`). Now we detect the line endings of the file before applying the edit, normalizing the file to the most common line ending in case there are multiple in the same file
* **Terminal commands on Windows:** Few commands, even properly formatted ones, would successfully execute on Windows because we weren't handling escape characters correctly. Now all valid Batch and PowerShell commands will run. The default shell is currently command prompt (`cmd.exe`); this will be configurable in the future.
* **Streaming:** A small streaming bug sometimes caused individual characters to be omitted—e.g., you might see `Hi! 👋 Im` instead of `Hi! 👋 I'm`.
* **Google tool calls:** Tool calls were being incorrectly translated into Google's native format, causing an error.
* **Importing credentials from Claude Code on macOS:** On Windows and Linux, Claude Code stores its OAuth credentials in `~/.claude/credentials.json`, but on macOS they're stored in the Keychain—now we correctly read from the Keychain on macOS when importing existing OAuth crendentials from Claude Code (it will require your password). Thank you to [Chris Watson](https://github.com/watzon) for [reporting](https://github.com/Piebald-AI/piebald-issues/issues/1)!
## Piebald v0.1.1 - Context Compaction, Plan Mode, Auto-scroll
* **Context compaction:** If enabled, conversations will now be automatically compacted when 85% of the context is used (configurable). You can also manually compact conversations via the "..." icon in the chat top bar. The system prompt and hyperparameters for compaction can be modified via the "Context Compaction" system profile.
* **Plan mode:** You can now switch any chat at any time into plan mode via shift+tab, exactly like Claude Code. The builtin tool is called `ProposePlanToUser`, which we think is a more intuitive name than CC's `ExitPlanMode` tool.
* **Auto-scroll:** Chats now auto-scroll down as messages are added to them.
* **GPT-5.2:** GPT-5.2 is now in the list of ChatGPT-subscription-compatible models.
* **Trash all chats:** There's a new button to trash (soft-delete) all the chats in a folder—useful if you have a bunch of test chats or an obsolete project.
* **Hard-breaks:** Multiple consecutive lines with no backslash or space after them and no empty line between them (aka hard-broken lines) are now displayed as separate lines instead of automatically being displayed as a single line. Since this is somewhat uncommon (e.g. GitHub READMEs don't do this, though GitHub issue/PR comments do), we'll make this configurable soon, when we add markdown customization settings.
**Up next:** Improved Windows support, file @-mentioning, streaming speed visualizer, and better sidebar chat metadata.
**Initial release of Piebald.** See [our announcement blog post](https://piebald.ai/blog/piebald-is-here).
# Color customization
Source: https://docs.piebald.ai/configuration/color-customization
Piebald allows customization of the background color and the orange accent color.
## Accent color customization
Available in Piebald Basic (Free)
In Piebald, you can change the orange accent color to any other color, which will then be used for all buttons, tool calls, and active items such as sidebar items and inputs.
You can customize the accent color used in light mode and dark mode separately. The foreground color will be black or white depending on the lightness of the color you've chosen.
Here's a demo of the light mode and dark mode accent colors being customized:
The text selection/highlight color is also affected by the accent color that you choose:
## Background color customization
Available in Piebald Basic (Free)
You can also customize the background color used under light mode and dark mode. Go to **Settings → Appearance** and customize the **Background Color → Light** and **Dark** settings.
# Font customization
Source: https://docs.piebald.ai/configuration/font-customization
You can change the font size and font family of the entire Piebald interface.
Available in Piebald Basic (Free)
Piebald allows you to customize the size of all text in the app to any size between 5 and 25 pixels, allowing for better resolution on smaller or larger screens.
You can customize both the interface font and the monospace font (used for code blocks, tool calls, etc.). You can choose any font installed on your system, or pick from 2,000+ Google Fonts.
To customize the font size and font family, go to **Settings → Appearance** and change **Font Size**, **Font Family** and **Monospace Font Family**.
Here's a demo where we change the font size from the default 18px to 15px, and the font family from the default Figtree to Lustria (a Google Font):
# Localization
Source: https://docs.piebald.ai/configuration/localization
Piebald has support for localization (internationalization/translations) in a variety of languages.
Available in Piebald Basic (Free)
Piebald is translated into several languages. To change the UI's language, go to **Settings → General** and select your language. Currently, Piebald supports the following languages:
* English
* Chinese Simplified (简体中文)
* German (Deutsch)
* Spanish (Español)
* Russian (Русский)
* French (Français)
* Portuguese (Português)
* Korean (한국어)
* Turkish (Türkçe)
* Italian (Italiano)
We're working to add more translations, so if there's another language that you'd like the app translated to, or you've found some text that's not translated, please submit feedback or [open an issue](https://github.com/Piebald-AI/piebald-issues/issues/new)!
# Native folder picker
Source: https://docs.piebald.ai/configuration/native-folder-picker
Piebald has a custom, native folder picker that matches the look and feel of the app.
Available in Piebald Basic (Free)
This custom folder picker can be enabled or disabled from the Settings dialog at **Settings → General → Use Built-in File Browser**. When disabled, Piebald will use the OS-native folder picker, e.g. on Ubuntu with GNOME:
# Sidebar compact view
Source: https://docs.piebald.ai/configuration/sidebar-compact-view
Use the compact view in the sidebar for a cleaner appearance.
Available in Piebald Basic (Free)
The chat sidebar in Piebald has a "Compact" view that hides most metadata about each chat, leaving only the status indicator and the title. This allows the sidebar to display a denser chat listing. You can click the / icon to enable/disable the compact view.
Chats that are older than 3 days are also hidden by a banner that you can click to expand them all. This threshold is configurable through **Settings → Appearance → General → Recent Chat Threshold** and is by default set to 3 days.
# VS Code theme importing
Source: https://docs.piebald.ai/configuration/vs-code-theme-importing
You can export themes from VS Code and import them into Piebald.
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald supports importing VS Code themes for use in markdown code blocks, tool call input/output, integrated terminals, the file browser, etc.
To export your theme in VS Code:
1. Open the command palette (press Ctrl/Cmd+Shift+P).
2. Search for and select **Developer: Generate Color Theme from Current Settings**.
3. Copy the resulting JSON.
Now go into Piebald and import it:
1. Open the settings with the icon in the bottom left corner.
2. Go to **Appearance**.
3. Scroll down to the **Code Block Themes** section.
4. Click **Import VS Code Theme**.
5. Enter a name.
6. Choose a color mode (Light/Dark). If you choose Dark, your new theme will only be available in the **Dark Mode** dropdown in the Code Block Themes section, so it will only be usable when Piebald is in dark mode. Choosing Light will also make your theme available only when Piebald is in light mode.
7. Paste your JSON in the **Theme JSON** box and click **Import**.
Here's a video demonstrating the complete flow from VS Code to Piebald:
# Builtin tool calls
Source: https://docs.piebald.ai/features/agentic/builtin-tool-calls
Piebald provides a set of built-in tools that are available to all models.
* `ReadFile`: Reads a file from the file system. Does not add line prefixes. Auto-approved for file paths in the current project.
* `WriteFile`: Writes the given contents to a file on disk. Overwrite existing files, if any. Auto-approved in auto-accept edits mode for file paths in the current project.
* `EditFile`: Replaces a given old string with a given new string. Auto-approved in auto-accept edits mode for file paths in the current project.
* `Glob`: Search for file paths via glob patterns, e.g. `**/*.ts`.
* `Grep`: Search for text in a folder recursively using regular expressions. Accepts a variety of [ripgrep](https://github.com/BurntSushi/ripgrep)-like options.
* `WebFetch`: Returns the text content of page at the given URL.
* `WebSearch`: Searches the web for the given query using the configured search service.
* `RunTerminalCommand`: Runs the given terminal command. Uses `sh` on macOS and Linux and `cmd /C` on Windows by default.
* `TodoWrite`: Updates the current todo list for the chat.
* `ProposePlanToUser`: Prompts you to exit plan mode by displaying the given plan text as markdown.
* `AskUserQuestion`: Allows the model to ask you any number of questions with one or more answers per question.
* `LaunchSubagent`: Launches a [subagent](/features/agentic/subagents).
* `CreateGoal`: Allows the model to create a [goal](/features/agentic/goals).
* `UpdateGoal`: Allows the model to update its goal.
* `GetGoal`: Gets the objective and status of the current goal.
* `SearchChats`: Allows the model to search the user's past chats for a specific query. Supports filtering by role (user or AI), searching within a date range, searching by regex, and more.
* `ListMcpResources`: Lists all [MCP resources](https://modelcontextprotocol.io/specification/latest/server/resources).
* `ReadMcpResource`: Reads an MCP resource.
## `RunTerminalCommand`
### Configuring the shell to be used for command execution
Internally, the `RunTerminalCommand` tool executes the given command using `sh -c` on UNIX systems (macOS and Linux) and `cmd.exe /C` on Windows. However, you can change the default shell to a preset or a custom command.
Go to **Settings → Built-in Tools** and select a preset for **Terminal Shell.** The default presets are:
**UNIX:**
* Bourne Shell (`/bin/sh`)
* Bash (`/bin/bash`)
* Zsh (`/bin/zsh`)
**Windows**
* Command Prompt (cmd.exe)
* Windows PowerShell
* Git Bash (MinGW)
Git for Windows must be installed in order to use Git Bash in Piebald. Download it from [gitforwindows.org](https://gitforwindows.org/).
#### Using a custom shell
You can also specify a custom shell, which is useful when you want to use a shell not explicitly mentioned above. For example, if you have custom aliases in a shell like Fish.
To use a custom shell, set **Terminal Shell** to **Custom...** and then enter each individual argument required to invoke the shell with a command. Most UNIX shells accept a `-c` argument, e.g. `fish -c "..."`. Use `{command}` as the last argument.
**Do not wrap the `{command}` argument in quotes** unless you're using a custom shell that requires it. When you use a custom shell, Piebald passes each argument to the shell directly without needing to quote arguments.
We plan to automatically detect installed shells so you won't have to go the custom route for the majority of cases.
### Live, interactive terminal commands
Available in Piebald Basic (Free)
When the model runs a terminal command, Piebald executes the command in an integrated terminal instance embedded in the app. This means that interactive commands and commands that output colors and other ANSI escape codes are supported.
When the command is interactive (i.e. requires user interaction/input like `npm init`, `sudo` commands, etc.), you can enter input and navigate options directly inside the tool call UI. This opens interesting possibilities, including running full REPLs like `node`, or even TUIs like `claude`!
Terminal sessions are not currently preserved across multiple terminal commands. For example, if the model sets a shell variable in one command, the next command will not be able to `echo` it. This is a limitation that we plan on removing in the future.
### Command output is truncated
Many commands return lots of output—compiling large projects, running large test suites, installing applications, etc. Instead of returning all this output directly to the LLM, the output is truncated to the first 10,000 and last 10,000 characters, as these windows usually contain the most important, useful information.
## `ProposePlanToUser`
### Copying plans to clipboard
Available in [Piebald Pro](https://piebald.ai/pricing)
When the model proposes a plan, it can be convenient to copy the plan to your clipboard to paste into a new chat, share to a teammate, or save to a file. With [Piebald Pro](https://piebald.ai/pricing), plans proposed by the AI have a copy button () that will copy the markdown contents of the plan to your clipboard:
## `WebSearch`
### Using DuckDuckGo for web search
By default, the `WebSearch` tool uses the free web search service [Exa](https://exa.ai/). However, if you've hit your Exa rate limits or you're not satisfied with the results from Exa web searches, you can change the search service to DuckDuckGo by setting **Settings → Web Search → Search Backend** to **DuckDuckGo**.
# Chat compaction
Source: https://docs.piebald.ai/features/agentic/chat-compaction
Use chat compaction in Piebald when your chat context space gets too low.
Available in Piebald Basic (Free)
As you send messages in a chat, its context window will get filled up, and when it reaches the context limit you won't be able to send any more messages. Piebald allows you to "compact" a large chat into a new smaller chat by having a model generating a detailed summary of the large chat, and using that as the basis for the new chat.
When you compact a chat, the entire chat you're compacting is sent to your configured LLM, which is told to compact it. Tool calls in the chat being compacted are carefully truncated to include only useful context.
### Configuring summarization and compaction
There are many facets of the summarization process and compaction that can be configured.
* The provider and model used to generate the summary can be configured from **Settings → Context Compaction → Provider** and **Model**.
* The system prompt, temperature, and other hyperparameters used to generate the summary can be configured using the builtin **Context Compaction** profile from **Settings → Profiles**.
* Auto-compaction can be enabled from **Settings → Context Compaction → Enable Auto-Compaction**.
* Remaining context window space threshold at which auto-compaction should be triggered can also be configured from **Settings → Context Compaction → Trigger threshold**. This setting is only visible when **Enable Auto-Compaction** is on.
### Custom instructions for compaction
If you haven't enabled the **Settings → Context Compaction → Skip custom instructions dialog** setting, manually compacting a chat will trigger a dialog to open, allowing you to enter custom instructions that will be added to the system prompt sent to the summarization model.
# Chat continuation
Source: https://docs.piebald.ai/features/agentic/chat-continuation
Perform a one-shot generation, bypassing the agentic loop.
Available in [Piebald Pro](https://piebald.ai/pricing)
Sometimes a model will forget to call tools in its response. It may also stop for other reasons such as rate limits or internal server errors. You might also manually interrupt it for any number of reasons.
In order to continue the agentic loop again, traditionally you'd have to send a dummy message like "continue" to the model. But that pollutes the context and might cause the model to produce different output than it would have originally.
Piebald allows you to **directly continue the conversation without adding a dummy message.** Click the (continue) button next to the (send message) button in the bottom-right corner of the input box when you're in a chat:
The agentic loop will be continued seamlessly. From the model's perspective there will not have been an interruption, and it will generate a response as normal.
If you click continue but the model is not in the middle of an agentic loop or has already responded without any tool calls, you may see an empty message generated when using Claude models.
Chat continuation requires [Piebald Pro](https://piebald.ai/pricing).
# Chat status in the sidebar
Source: https://docs.piebald.ai/features/agentic/chat-status-in-the-sidebar
Quickly understand the state of multiple parallel agents.
Piebald's chat sidebar provides an easy way to understand the state of all of your chats. There are several statuses that Piebald reports for chats:
* **Working:** When the model is generating a response or calling tools.
* **Finished:** When the model is finished working and the result is ready for you to take action.
* **Pending your approval:** When the model proposes a plan or called a tool that needs your approval/denial.
[Piebald Pro](https://piebald.ai/pricing) offers additional statuses to give further insight:
* **Draft prompt partially written:** When you've written a message in the chat but have not yet sent it.
* **Error during generation:** When an error occurs during a response generation (network errors, credit balance too low, invalid configuration, etc.)
Here's a screenshot of the various statuses in action:
# Claude Code hooks compatibility
Source: https://docs.piebald.ai/features/agentic/claude-code-hooks-compatibility
Piebald supports Claude Code-compatible command hooks. Hooks are shell commands that run at specific points during a chat, receive JSON on `stdin`, and can return JSON on `stdout` to do the following:
* Add context to the chat
* Prevent prompts from being sent
* Automatically approve or deny tools
* Modify tool call input before tools are executed
* Force the model to continue iterating when it stops
Piebald's Claude Code hooks compatibility is limited to command hooks—HTTP-based, prompt-based, and agent-based hooks aren't supported yet. `if` conditions, `CLAUDE_ENV_FILE`, transcript files, and async hooks are not supported, and `statusMessage` and `suppressOutput` are ignored.
We also don't support the following Claude Code hook types, which don't have dirrect equivalents in Piebald: `SessionEnd`, `Notification`, `ConfigChange`, `CwdChanged`, `FileChanged`, `InstructionsLoaded`, `WorktreeCreate`, `WorktreeRemove`, `Elicitation`, `ElicitationResult`, `TaskCreated`, `TaskCompleted`, `TeammateIdle`, and `PermissionRequest`.
If you need any of those features, [let us know](https://github.com/Piebald-AI/piebald-issues/issues/new).
## Quick Start
Piebald uses Claude Code's hook format. We don't have a custom hooks format, so all of your Claude Code hooks should work without modification in Piebald (except such as make use of functionality we don't yet support).
To get started with Claude Code hooks, create a `.claude/settings.json` file in your project:
```json theme={null}
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/check-bash.sh",
"timeout": 30
}
]
}
]
}
}
```
Then create the hook script:
```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail
input=$(cat)
command=$(echo "$input" | jq -r '.tool_input.command // ""')
if [[ "$command" == *"rm -rf /"* ]]; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "Refusing to run a dangerous delete command."
}
}'
exit 0
fi
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "allow"
}
}'
```
Make it executable:
```bash theme={null}
chmod +x .claude/hooks/check-bash.sh
```
To reload the hooks cache after changing your project `.claude/settings.json`, you'll need to create a new chat in that project. After changing global hooks in `~/.claude/settings.json`, restart Piebald to reload the global hooks cache.
## Configuration Files
Hooks are loaded from Claude Code-compatible settings files:
| Location | Scope |
| --------------------------------------- | --------------------------------------- |
| `~/.claude/settings.json` | Global hooks for all projects |
| `/.claude/settings.json` | Project hooks |
| `/.claude/settings.local.json` | Local project hooks, usually gitignored |
Later configs append hook handlers. For example, if both global and project files define `PreToolUse`, both sets of handlers can run.
A hook group has a `matcher` and a list of hook handlers:
```json theme={null}
{
"hooks": {
"UserPromptSubmit": [
{
"matcher": "submit",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/check-prompt.sh",
"timeout": 10
}
]
}
]
}
}
```
| Field | Description |
| --------------- | ----------------------------------------------------------------------------------- |
| `matcher` | Regex matched against the event's value. `null`, `""`, or `"*"` matches everything. |
| `type` | Only `"command"` is supported. Other types are ignored for now. |
| `command` | Shell command to run. |
| `timeout` | Timeout in seconds. Defaults to `60`. |
| `statusMessage` | Accepted for compatibility, but not currently shown in the UI. |
Matchers are case-sensitive regexes. Invalid regexes won't match.
## Supported Events
| Event | Can Affect Behavior | When It Runs |
| -------------------- | ------------------------------------- | ---------------------------------------------------------------------------- |
| `SessionStart` | Adds context | When a chat is created. Also runs after compaction with `source: "compact"`. |
| `UserPromptSubmit` | Can block or add context | Before a user message is sent. |
| `PreToolUse` | Can allow, deny, ask, or modify input | After Piebald evaluates tool approval, before the tool executes. |
| `PostToolUse` | Adds context for the next turn | After a tool completes successfully. |
| `PostToolUseFailure` | Adds context | After a tool fails. |
| `Stop` | Can continue generation or force stop | When a normal chat generation would finish. |
| `StopFailure` | Observational | When generation fails with an error. |
| `PreCompact` | Observational | Before context compaction. |
| `PostCompact` | Observational | After context compaction. |
| `SubagentStart` | Adds context | Before a subagent's first message. |
| `SubagentStop` | Can continue generation or force stop | When a subagent generation would finish. |
`SessionEnd` isn't supported because Piebald sessions don't necessarily ever end like they do in Claude Code.
## Hook Execution
Hook commands run through the platform shell:
| Platform | Shell |
| ----------- | -------------------------------------------- |
| macOS/Linux | `/bin/bash -c`, falling back to `/bin/sh -c` |
| Windows | `cmd /C` |
Hook input JSON is sent to the command's `stdin` and reads `stdout` and `stderr`.
Hook commands receive these environment variables:
| Variable | Value |
| -------------------- | -------------------------------------- |
| `CLAUDE_PROJECT_DIR` | The resolved project or chat directory |
| `CLAUDE_CODE_REMOTE` | Always `false` |
Matched hook handlers run in parallel. If multiple hooks return decisions, Piebald resolves the decision according to the event rules below.
## Common Input
Every hook receives a JSON object with common fields:
```json theme={null}
{
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"transcript_path": null,
"cwd": "/Users/alex/project",
"hook_event_name": "PreToolUse",
"permission_mode": "default"
}
```
| Field | Description |
| ----------------- | ------------------------------------------------------------------ |
| `session_id` | Stable deterministic ID for the Piebald chat. |
| `transcript_path` | Always `null`; Piebald doesn't write Claude Code transcript files. |
| `cwd` | Resolved project directory or the chat's current directory. |
| `hook_event_name` | Name of the event being run. |
| `permission_mode` | One of `default`, `acceptEdits`, `bypassPermissions`, or `plan`. |
## Output Format
Hooks can print JSON to `stdout`:
```json theme={null}
{
"continue": true,
"stopReason": "optional reason",
"additionalContext": "Text to add to the model context.",
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Allowed by policy.",
"updatedInput": {
"command": "ls -la"
},
"decision": "block",
"reason": "Explain what the model should do next.",
"additionalContext": "More context for the model."
}
}
```
Piebald also accepts plain text on `stdout` for successful hooks. If a hook exits with code `0` and stdout isn't valid JSON, the text is treated as `additionalContext`.
### Exit Codes
| Exit Code | Behavior |
| ------------- | ---------------------------------------------------------------------------------------- |
| `0` | Success. JSON stdout is parsed; plain text stdout becomes additional context. |
| `2` | Blocking signal for events that support blocking, such as `UserPromptSubmit` and `Stop`. |
| Other nonzero | Logged and ignored. |
## UserPromptSubmit
`UserPromptSubmit` runs after you press Enter but before the message is actually sent.
Matcher value: `submit`
Input includes:
```json theme={null}
{
"hook_event_name": "UserPromptSubmit",
"prompt": "The user's message text"
}
```
To block the prompt, return:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "UserPromptSubmit",
"decision": "block",
"reason": "Please remove the production secret before sending."
}
}
```
You can also exit with code `2`; `stderr` will be used as the block reason.
To add context to the message, return `additionalContext`:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "UserPromptSubmit",
"additionalContext": "Remember: this repository uses pnpm."
}
}
```
## PreToolUse
`PreToolUse` runs after a tool call is generated but before it's executed. It can override approval decision that would usually be applied by the selected permission mode.
Matcher value: the Claude Code tool name, such as `Bash`, `Read`, `Edit`, or `mcp__github__create_issue`.
Input includes:
```json theme={null}
{
"hook_event_name": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "pnpm test",
"description": "",
"timeout": 60000,
"run_in_background": false
},
"tool_use_id": "toolu_123"
}
```
Return a permission decision:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "ask",
"permissionDecisionReason": "This command touches generated files."
}
}
```
Supported decisions:
| Decision | Behavior |
| -------- | ------------------------------------------------------------------ |
| `allow` | Auto-approve the tool call. |
| `deny` | Deny the tool call. Uses `permissionDecisionReason` as the reason. |
| `ask` | Require manual approval in the UI. |
If multiple hooks return conflicting decisions, the most restrictive decision wins, so deny > ask > allow.
A `PreToolUse` hook can also modify tool input with `updatedInput`:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"updatedInput": {
"command": "pnpm test -- --runInBand",
"description": "",
"timeout": 60000,
"run_in_background": false
}
}
}
```
Matched hooks run in parallel. If multiple hooks return `updatedInput`, the last returned update wins. Avoid configuring multiple hooks that modify the same tool input.
PreToolUse runs during the approval evaluation. If a hook returns `ask`, and the user manually approves the tool later, `PreToolUse` isn't run again for that approval.
## PostToolUse
`PostToolUse` runs after a tool completes successfully.
Matcher value: the Claude Code tool name.
Input includes:
```json theme={null}
{
"hook_event_name": "PostToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "pnpm test",
"description": "",
"timeout": 60000,
"run_in_background": false
},
"tool_response": "Test output...",
"tool_use_id": "toolu_123"
}
```
`PostToolUse` can't prevent a tool that already ran. If it returns `decision: "block"`, the reason is queued as context for the model's next turn:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "PostToolUse",
"decision": "block",
"reason": "Tests failed. Fix the failing test before continuing."
}
}
```
You can also return `additionalContext` to add information for the next model turn.
## PostToolUseFailure
`PostToolUseFailure` runs when a tool fails.
Matcher value: the Claude Code tool name.
Input includes:
```json theme={null}
{
"hook_event_name": "PostToolUseFailure",
"tool_name": "Bash",
"tool_input": {
"command": "pnpm test",
"description": "",
"timeout": 60000,
"run_in_background": false
},
"tool_use_id": "toolu_123",
"error": "Command failed",
"is_interrupt": false
}
```
Outputs are observational. `additionalContext` is queued for the model.
## Stop and SubagentStop
`Stop` runs when a normal chat generation would finish. `SubagentStop` uses the same behavior for subagent chats.
Matcher value:
| Event | Matcher |
| -------------- | --------- |
| `Stop` | `""` |
| `SubagentStop` | `default` |
Input includes:
```json theme={null}
{
"hook_event_name": "Stop",
"stop_hook_active": false,
"last_assistant_message": "The assistant's final response text"
}
```
For `SubagentStop`, input also includes:
```json theme={null}
{
"agent_id": "550e8400-e29b-41d4-a716-446655440000",
"agent_type": "default",
"agent_transcript_path": null
}
```
To make the model continue, return `decision: "block"` with a reason:
```json theme={null}
{
"hookSpecificOutput": {
"hookEventName": "Stop",
"decision": "block",
"reason": "Run the test suite before stopping."
}
}
```
The reason is injected as a new user message and continues generation.
To force an immediate stop, return `continue: false`:
```json theme={null}
{
"continue": false,
"stopReason": "Enough work has been completed."
}
```
`continue: false` takes precedence over `decision: "block"`.
`continue: true` doesn't mean "keep generating". It's treated as no opinion. Use `decision: "block"` or exit code `2` to request continuation.
Stop hook continuations are capped at 3 per generation loop to prevent infinite loops.
## SessionStart
`SessionStart` runs when a chat starts.
Matcher value:
| Source | Matcher |
| -------------- | --------- |
| New chat | `startup` |
| Compacted chat | `compact` |
Input includes:
```json theme={null}
{
"hook_event_name": "SessionStart",
"source": "startup",
"model": "claude-sonnet-4-5"
}
```
Return `additionalContext` to queue context for the chat.
## Compaction Hooks
`PreCompact` runs before compaction, and `PostCompact` runs after compaction.
Matcher value: `manual` or `auto`
`PreCompact` input includes:
```json theme={null}
{
"hook_event_name": "PreCompact",
"trigger": "manual",
"custom_instructions": "Optional user instructions"
}
```
`PostCompact` input includes:
```json theme={null}
{
"hook_event_name": "PostCompact",
"trigger": "manual",
"compact_summary": "The generated compaction summary"
}
```
These hooks are observational. Their outputs don't change compaction behavior.
## StopFailure
`StopFailure` runs when generation fails.
Matcher value: the classified error type, such as `rate_limit`, `authentication_failed`, `timeout`, `network_error`, `cancelled`, or `unknown`.
Input includes:
```json theme={null}
{
"hook_event_name": "StopFailure",
"error": "rate_limit",
"error_details": "Full error details",
"last_assistant_message": "Last assistant text, if available"
}
```
Outputs are ignored.
## SubagentStart
`SubagentStart` runs after a subagent chat is created and before its first message.
Matcher value: `default`
Input includes:
```json theme={null}
{
"hook_event_name": "SubagentStart",
"agent_id": "550e8400-e29b-41d4-a716-446655440000",
"agent_type": "default"
}
```
Return `additionalContext` to inject context into the subagent's first message.
## Tool Name Mapping
Tool names are automatically mapped to Claude Code tool names:
| Piebald Tool | Claude Code Hook Name |
| -------------------- | --------------------- |
| `RunTerminalCommand` | `Bash` |
| `ReadFile` | `Read` |
| `WriteFile` | `Write` |
| `EditFile` | `Edit` |
| `Glob` | `Glob` |
| `Grep` | `Grep` |
| `LaunchSubagent` | `Agent` |
| `WebFetch` | `WebFetch` |
| `WebSearch` | `WebSearch` |
| `AskUserQuestion` | `AskUserQuestion` |
| `ProposePlanToUser` | `ExitPlanMode` |
| `TodoWrite` | `TodoWrite` |
| MCP `server__tool` | `mcp__server__tool` |
`Task` is accepted as an alias for `Agent` in matchers.
## Tool Input Reshaping
Before tool input is sent to hooks, it's somewhat reshaped to match Claude Code's field names:
| Tool | Reshaping |
| ----------------------- | ------------------------------------------------------------------ |
| `Bash` | Adds `description`, `timeout`, and `run_in_background` defaults. |
| `Read`, `Write`, `Edit` | Renames `path` to `file_path` and resolves it to an absolute path. |
| `Agent` | Adds `description` and `subagent_type: "default"`. |
| Other tools | Passed through unchanged. |
When `PreToolUse` returns `updatedInput`, Piebald converts the Claude Code-shaped input back into Piebald's internal shape before executing the tool.
## Example: Block Production Commands
```json theme={null}
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/no-prod.sh"
}
]
}
]
}
}
```
```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail
input=$(cat)
command=$(echo "$input" | jq -r '.tool_input.command // ""')
if [[ "$command" == *"kubectl"* && "$command" == *"prod"* ]]; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "ask",
permissionDecisionReason: "Production command requires manual approval."
}
}'
else
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "allow"
}
}'
fi
```
## Example: Ask The Model To Continue Until Tests Pass
```json theme={null}
{
"hooks": {
"Stop": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/check-tests.sh",
"timeout": 120
}
]
}
]
}
}
```
```bash theme={null}
#!/usr/bin/env bash
set -euo pipefail
if pnpm test >/tmp/piebald-test-output.txt 2>&1; then
exit 0
fi
jq -n --rawfile output /tmp/piebald-test-output.txt '{
hookSpecificOutput: {
hookEventName: "Stop",
decision: "block",
reason: ("Tests are failing. Fix them before stopping.\n\n" + $output)
}
}'
```
# Context
Source: https://docs.piebald.ai/features/agentic/context
Piebald provides basic system and project context to the LLM, such as AGENTS.md and skills, and it also allows the LLM to gather context itself through specialized tools.
# Automatically-loaded context
AGENTS.md and skills are automatically loaded from your project directory and your home folder. You can disable automatic context loading in **Settings → Agent Context**.
## AGENTS.md
Available in Piebald Basic (Free)
Piebald supports `AGENTS.md` ([https://agents.md/](https://agents.md/)). It will automatically read it from the current directory and attach it to the current chat:
### Alternative file names
While `AGENTS.md` is preferred, Piebald will also read from the following other common file names:
* `CLAUDE.md`
* `GEMINI.md`
* `CRUSH.md`
* `QWEN.md`
* `IFLOW.md`
* `WARP.md`
* `copilot-instructions.md`
* `.junie/guidelines.md`
* `.kiro/guidelines.md`
* [+ Add](https://github.com/Piebald-AI/piebald-issues/issues/new?title=Add+new+AGENT.md+alternative+file+name%3a%20)
If you'd like Piebald to support another file name, please [open an issue](https://github.com/Piebald-AI/piebald-issues/issues/new?title=Add+new+AGENT.md+alternative+file+name%3a%20)!
## Skills
Piebald also automatically reads and loads [skills](https://agentskills.io/) that you've created or installed locally in your project or globally.
Project-specific skills are read from the following locations:
* `/.claude/skills`
* `/.claude/commands`
* `/.agents/skills`
* `/.agents/commands`
Global skills are read from these locations, relative to your home folder:
* `~/.claude/skills`
* `~/.claude/commands`
* `~/.agents/skills`
* `~/.claude/commands`
Global skills are also discovered from Claude Code plugins. The `~/.claude/plugins/installed_plugins.json` file is read and parsed and skills are gathered from each plugin's `skills` folder (e.g. `~/.claude/plugins//skills`).
# AI gathering context
## AI chat search
The [`SearchChats`](/features/agentic/builtin-tool-calls) tool allows the LLM to search your past chats. It provides various options for searching chats:
* Keyword/exact/regex mode.
* Date range (before and after dates).
* Project and worktree paths to search in.
* Filtering by roles (user and AI).
There are also options to refine what messages are returned:
* Number of surrounding messages to include for extra context on each search result.
* Whether to include results from the current chat as the current chat is already available to the model.
* Maximum number of search results to return to the LLM. For example, the LLM might pass `1` for this option for a broad discovery search.
You can view the search results that the LLM sees by expanding the "Search chats for \[query]":
# Default system prompt
Source: https://docs.piebald.ai/features/agentic/default-tools-and-system-prompt
Piebald's default system prompt.
Unlike most agentic development tools, Piebald does not currently have a default system prompt. For the present, we find that many models work just fine without a system prompt.
When we implement emulation of other agentic development tools, you'll be able to use their system prompts, and we'll consider developing a system prompt of our own; however, a large system prompt will generally just waste token space for capable models like Claude and GPT-5.x that don't directly need one.
# Goals
Source: https://docs.piebald.ai/features/agentic/goals
Piebald supports **goals**—loops that force the model to continue its task until it marks it complete.
## Usage
You can start a new goal with the `/goal ` slash command. The model can also start a goal itself by calling the `CreateGoal` tool.
Each time the model completes generation, Piebald automatically sends another user message with a goal-specific context notification reminding it to continue working or complete the goal. The model can update the goal with a builtin tool, `UpdateGoal`, to mark it as complete or blocked.
The model can also get the goal details at any time using the `GetGoal` builtin tool. This tool returns the original goal objective and the current state of the goal.
You can check on the progress of the goal by clicking the "Active goal" indicator in the chat bar at the top of the app:
Chats with goals—active and complete—are displayed in the sidebar with a special goal indicator:
# Image support
Source: https://docs.piebald.ai/features/agentic/image-support
Piebald supports sending images to models that support them.
Available in Piebald Basic (Free)
Piebald supports sending images to vision-capable models, so they can analyze and iterate based on them. You can upload files using the Piebald file picker or drag and drop them into the message input.
Here's a demo where we ask a model what two screenshots are about:
Piebald does not currently support models that *generate* images. Support for image generation models is planned.
# MCP servers
Source: https://docs.piebald.ai/features/agentic/mcp-servers
## Configuring/setting up MCP servers
### Remote/HTTP MCP servers
Available in Piebald Basic (Free)
In addition to local MCP servers that run on your machine, Piebald also supports **remote MCP servers** (also known as **HTTP MCP servers**).
To add a new remote MCP server:
1. Go to **Settings → MCP Servers**.
2. Click **Add → Add Server**.
3. Enter a name.
4. For **Transport Type**, select **HTTP**.
5. Enter the MCP server URL (e.g. for Context7, `https://mcp.context7.com/mcp`).
6. If the server requires authentication, and you want to authenticate immediately, click **Create & Authenticate**; otherwise, click **Create Server**.
7. If the server requires authentication and you haven't authenticated, the MCP server will show a yellow "Auth Required" badge. If you want to authenticate the MCP server, click the More button (the three dots) and choose **Authenticate**.
You can also add an MCP server by pasting conventional `mcpServers` config JSON.
1. Go to **Settings → MCP Servers**.
2. Click **Add → Paste JSON**.
3. Paste your JSON.
### Headers and manual OAuth configuration
You can configure remote MCP servers with a few configuration options:
* Headers
* Client ID
* Client Secret
* Redirect port
#### Customizing redirect port
When you sign into an MCP server with OAuth (e.g. GitHub, Figma, or Notion), the MCP signin process needs to know what URL to redirect to so it can send the new login information back to Piebald. In Piebald, this URL is
`https://piebald.ai/desktop/redirect?code=...&state=...`. The page at this URL, in turn, redirects you to a local, temporary web server automatically started by Piebald. The URL to this temporary web server is contained in the `state` parameter in the URL above.
By default, the local temporary web server uses a random port (e.g. `localhost:3842`, `localhost:18502`, etc.). To prevent a random port from being selected, you can set the **Redirect Port** setting to a static port, which will be used every time you authenticate that MCP server. If another process is already running on that port, you'll need to kill the process or change the port before you can authenticate.
## MCP tools
When an LLM calls an MCP tool, Piebald checks if the input and output are JSON and formats and syntax-highlights them if so. If it's not JSON, it will be displayed as normal text:
#### Images returned by MCP tools
Some MCP servers, like Figma, Playwright, or Chrome DevTools, ship tools that return images (e.g. screenshots of web pages or design exports).
Piebald supports images returned by these tools and displays them in the tool call widget between the input and output. You can click on them and switch between them as you can in the message input.
## MCP resources
Piebald supports [**MCP resources**](https://modelcontextprotocol.io/specification/latest/server/resources), which allow the LLM to gather large amounts of data (e.g. large files, database schemas, etc.) at once. The model can use the `ListMcpResources` builtin tool to find available resources and `ReadMcpResource` to read one of the available resources.
# Pausing the agentic loop
Source: https://docs.piebald.ai/features/agentic/pausing-the-agentic-loop
Available in [Piebald Pro](https://piebald.ai/pricing)
With Piebald, you can **pause the agentic loop** in a chat. This is a unique feature that may seem unintuitive at first.
Traditionally, the only way you can stop an agent is by interrupting it. If it's generating text, there will be a partial response which will have to be regenerated, wasting time, tokens, and context space. If it's executing a tool call, the subprocess will be killed and the system may be left in an inconsistent state (files partially modified, temporary files not cleaned up, handles corrupted, etc.).
Piebald takes advantage of the **agentic loop** to enable graceful pausing of the chat **without** interrupting.
## The agentic loop
The "agentic loop" is the underlying mechanism that enables AI agents to work autonomously. A conversation is a list of messages starting with the first user message; that context is sent to an AI provider and a response is generated and appended to the conversation.
If the response contains tool calls, they get executed—possibly waiting while the interface allows the user to approve or deny them—and their output is appended to the conversation context, and a second response is generated.
This cycle of *context update → regenerate* fully encapsulates the entire agentic loop and is what makes modern agentic development possible.
## Pausing the loop
In order to provide graceful pausing, Piebald hooks into the agentic loop; we simply break the loop and skip auto-approval if the chat is paused. This allows you to temporarily and cleanly stop the agent—for example, if the model has done its research and planning but your working directory isn't ready yet—without wasting time or tokens.
Pausing has another benefit as well. When the loop is paused, no tool calls are automatically approved, so you can intercept tools that would normally be auto-approved and edit or deny them instead. Here's an example of a read-only tool (`ls -la`) which would normally be auto-approved, but, since the chat is paused, is left waiting for manual handling:
## Resuming the loop after pausing
Resuming the loop simply picks it up where it left off; auto-approving any elligible pending tool calls, starting a new generation, and repeating. The result will be exactly the same as if you had let the agent continue without pausing.
Pausing the agentic loop requires [Piebald Pro](https://piebald.ai/pricing).
# Permission modes
Source: https://docs.piebald.ai/features/agentic/permission-modes
Piebald has four **permission modes** that
## Read-only
The **Read-only** permission mode automatically approves `ReadFile` tool calls. `ReadFile` tool calls that attempt to read files outside the project directory are also automatically approved.
Piebald uses a hardcoded list of common, read-only terminal commands that are automatically, e.g. `pwd`, `ls`, `head`, `tail`, etc. In the future, we'll add a list somewhere of all these read-only commands.
## Auto-accept
The **Auto-accept** permission mode automatically approves `WriteFile` and `EditFile` tool calls within the project directory. `WriteFile` and `EditFile` tool calls that attempt to write or edit files outside the project directory must be manually approved.
All read-only commands auto-approved in the Read-only permission mode are also auto-approved in Auto-accept. Commands are also automatically approved if they use the `>` or `>>` redirect operators. Note that commands that redirect output to files outside the project directory are also automatically applied.
## Plan
In Piebald, plan mode is represented by the **Plan** permission mode. In this mode, read-only commands and `ReadFile` calls are automatically approved.
A context notification is attached to your message to tell the LLM in strong words to plan only and not to attempt to write. If it still does attempt to write files using the `WriteFile` or `EditFile` tools, the tool calls will need to be manually approved or denied.
The LLM is instructed to use the `ProposePlanToUser` to end the planning session.
## YOLO
In **YOLO**, all tool calls except `AskUserQuestion` and `ProposePlanToUser` are automatically approved, whether they're read-only, write, or destructive. Automatically approving `AskUserQuestion` and `ProposePlanToUser` would defeat their purpose, so you'll still have to manually approve those tool calls.
## Setting a permission mode as default
You can select a default permission mode (Read-only, Auto-accept, Plan, or YOLO) that new chats should use.
This is done with the setting **Settings → General → Default Permission Mode** or by holding Ctrl and selecting a permission mode from the dropdown.
# Subagents
Source: https://docs.piebald.ai/features/agentic/subagents
Subagents allow the main agent to perform small tasks without polluting context.
Available in Piebald Basic (Free)
Piebald subagents allow the main agent to perform scoped sub-tasks such as exploring the codebase and make mechanical multi-file edits. It's especially beneficial because it offloads context-heavy work like reading many files to a separate context window and returns only the distilled information requested, thus saving context window space in the main conversation.
## Subagents interface
When the model spawns a subagent, it'll display as a normal tool call, but the tool call window will display a complete inline chat interface, allowing you to approve or deny any tool calls that the subagent makes. The inline view is intentionally minimal—you can only approve/deny tool calls. Everything else (editing, deleting, regenerating, etc.) requires opening the subagent chat in the main window.
If you'd like to see the prompt that the model used for the subagent, you can hover over the "Prompt" text in the bottom-left corner of the subagent tool window.
The subagent chat can be opened in the main window more easily using the "Open chat" button in the bottom-right corner of the subagent tool window. Once you've opened the subagent chat, you can then return to the main agent's chat with the left-pointing arrow button up next to the chat title:
Currently, next to the "Open chat" button, we display the profile used by that subagent, but in the future, we'll enhance the subagent tool call window to display the provider, model, and profile too.
## Technical details
Subagents are spawned by a builtin tool, `LaunchSubagent`. This tool takes a `prompt` parameter populated by the model. The last message generated by the subagent will be returned as the output of this tool back to the main agent.
The `LaunchSubagent` tool creates a new chat and sends the `prompt` parameter as a first user message and automatically attaches a **Subagent** context notification that informs the subagent model that it's running in a subagent context.
Subagents are meant to execute focused tasks, so the following built-in tools are disabled for them:
* `LaunchSubagent`
* `ProposePlanToUser`
* `AskUserQuestion`
* `TodoWrite`
Since subagent chats are normal Piebald chats, you can work in the subagent chat like any other chat, even when the subagent is in progress. You can tag them, generate titles for them, etc. Subagent chats are highlighted green in the sidebar and are nested under their parent chat.
### Subagents are automatically approved
Since subagents function as extensions of the main agent, they're automatically approved in all permission modes (Default, Auto-Accept, YOLO, and Plan).
Because subagents are automatically approved, we've added settings for controlling the default provider, model, profile and permission mode for subagents in **Settings → Built-in Tools**.
# Tool calls
Source: https://docs.piebald.ai/features/agentic/tool-calls
In Piebald chats, tool calls are treated as first-class citizens, with convenient ways to view tool call input, output, errors, etc.
### Tool calls are streamed
Available in Piebald Basic (Free)
Tool calls to the UI progressively as the model generates them. This can make agentic development feel faster because you can see tool calls right away instead of waiting for them to be fully finished streaming.
### Enabling/disabling individual tools
Available in Piebald Basic (Free)
Piebald allows you to disable individual MCP servers and tools or tool use altogether.
In a chat, open the configuration sidebar by clicking the icon in the top-right corner, go to the **Configuration** tab, and scroll to the bottom. You'll see a list of all enabled MCP servers and their tools:
### Re-executing tool calls
Available in [Piebald Pro](https://piebald.ai/pricing)
Tool calls can be **re-executed** any time after they finish running. This is useful if the model runs a command but you meant to make change to the environment before it ran it. For example, the model might try to run a certain command but it's not installed, so you installed it and then re-executed the tool call. That way the model never knew the command wasn't installed at first.
When a tool call is re-executed, it's marked as *stale*, to indicate that its latest output has never been sent to the model and that any subsequent messages were produced with the old output. Clicking "Regenerate" will regenerate the messages after the tool call.
Here's a demo of a tool call being re-executed:
### Tool call execution time
Available in Piebald Basic (Free)
On some tool calls (e.g. terminal commands), Piebald automatically records the length of time that the tool call takes to execute. The time is displayed in the tool call widget at the right of the arguments:
By default, this feature is disabled. You can enable this setting at **Settings → Chat Interface → Show Tool Execution Time**.
# Assistant message quoting
Source: https://docs.piebald.ai/features/chat-experience/assistant-message-quoting
Quick way to quote the model's messages.
Available in Piebald Basic (Free)
Frequently you may want to quote one of the model's messages for further refinement or explanation. In Piebald, instead of just copying the text that you want to quote, you can select the text and click the **Quote** button just below the message:
And then Piebald will insert the message directly into the message input as a markdown blockquote:
Piebald also supports quoting text in plans proposed by the model.
# Branching (forking)
Source: https://docs.piebald.ai/features/chat-experience/branching
Piebald supports branching/forking chats for context efficiency.
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald doesn't constrain you to have a single, linear chat history. You can branch at any point in the chat, after any user or AI message.
There are two ways of branching: **replying** to a previous message, and **editing and regenerating** a previous message. Both will generate a fresh response in a new branch.
Branching allows you to be significantly more efficient with your context window. When you want to, for example, ask a followup question of an older response, or perform more tasks related to the current conversation, you don't have to include subsequent irrelevant context.
This lets you work with the conversation's valuable past context for much longer before you have to compact or start a new chat, and avoids sending unnecessary tokens to providers.
If you have branches but you've downgraded to Piebald Basic, then the branch point banner will still show but it will be locked:
You can also rename a branch at any time. Hover over the tab and click "Rename":
# Chat navigation
Source: https://docs.piebald.ai/features/chat-experience/chat-navigation
Piebald has a few navigation features to make long chats easier to move through.
## Jump up and jump down buttons
Available in Piebald Basic (Free)
Moving your mouse cursor to the top or bottom of the chat viewport will display a small button for jumping to the top or bottom of the chat. These buttons can be particularly useful when you've scrolled up and auto-scrolling has paused/disengaged.
## Disable auto-scroll
You can disable auto-scroll by disabling the setting **Chat Interface → Auto-scroll During Streaming**.
# Chat rendering features
Source: https://docs.piebald.ai/features/chat-experience/chat-rendering-features
Piebald brings special features to the chat view—admonitions/callouts, automatic color swatches, clickable file references, and more.
## Clickable file references
Available in [Piebald Pro](https://piebald.ai/pricing)
File or folder paths that the model references in its responses can be highlighted with a colored file-type-specific icon and made clickable. Clicking on them will open the file or folder in the integrated code editor.
Hovering over a reference will load the file and show it with syntax highlighting, similar to file-\@mentions:
## Markdown admonitions
Available in [Piebald Pro](https://piebald.ai/pricing)
It's common for markdown renderers to support what are known as **admonitions, callouts,** or **alerts.** They're useful for things like notices or warnings in documentation. The syntax is similar to the blockquote syntax (`>`) but with an additional marker:
```markdown theme={null}
> [!NOTE]
> This is a **note.**
```
On the [Pro](https://piebald.ai/pricing) plan, Piebald natively supports rendering admonitions using [GitHub-flavored syntax:](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts)
### Getting the model to use admonitions
For now, you'll need to **explicitly tell** the AI to use admonitions in order for it to use them—by default LLMs don't typically output admonitions unless told to. For example, you could create a profile and add *"Use `> [!TYPE]` admonitions in your responses when appropriate."*
However, in the near future we plan on making a more intuitive UI for enabling the model to use these and other markdown features. Imagine a toggle or checkbox labeled "Use admonitions" in a dropdown labeled "Additional markdown features," for example.
## Color swatches
When you or the model uses a hex, HSL, or RGB color in a message, Piebald automatically detects it and displays a small color swatch of that color next to the text.
# Chat view configuration
Source: https://docs.piebald.ai/features/chat-experience/chat-view-configuration
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald's chat view can be configured to look and behave a few different ways. These configuration options are available in the **Configuration** dropdown accessible from the switches icon in the top right corner.
### Smooth streaming configuration
You can customize the way text is streamed to the chat view.
* **Streaming type:** Choose None for no streaming, Raw for streaming exactly as the upstream provider streams tokens, and Smooth for the customizable streaming experience.
* **Streaming speed:** Set a fixed speed in milliseconds (e.g. 100ms) or dynamic speed to stream at the speed that tokens are generated by the upstream provider.
* **Chunk size:** Set whether to stream by character or by word.
* **Animation:** Choose no animation, a fade animation, or a blur animation.
* **Animation speed:** Set the animation speed to a fixed speed in milliseconds.
Selecting the **Blur** animation will produce streaming that looks like this:
**Fade** looks like this:
### Raw markdown mode
Available in Piebald Basic (Free)
You can view raw markdown text content directly, instead of having it rendered as rich text. Open the Configuration dropdown and enable **Raw Markdown mode**, and markdown text content will be syntax-highlighted and displayed instead of rich text.
### Using @pierre/diffs for file edit diffs
Available in [Piebald Pro](https://piebald.ai/pricing)
By default, Piebald uses [Monaco editor](https://github.com/microsoft/monaco-editor), the same editor that powers VS Code, to render diffs when the model creates or edits files. Here's an example:
With Piebald Pro, you can switch the library used for diff rendering to [`@pierre/diffs`](https://diffs.com/):
To use Diffs, go to **Settings → Chat Interface** and under **Diff Library**, select **@pierre/diffs**.
# Context management
Source: https://docs.piebald.ai/features/chat-experience/context-management
Piebald has various chat context management features.
Available in Piebald Basic (Free)
### Token count usage monitor
Piebald has a badge displaying the number of tokens that a particular chat uses. This badge updates each time a new assistant message is completed.
# Desktop notifications
Source: https://docs.piebald.ai/features/chat-experience/desktop-notifications
Piebald supports desktop notification when chats need your attention.
Available in Piebald Basic (Free)
When the model is finished with a task or calls a tool that needs your attention, Piebald can display notifications on your desktop and play sounds with them.
Desktop notifications are enabled by default. If you'd like to disable them, go to the **Settings → Notifications** and uncheck **Enable Desktop Notifications**.
## When notifications are sent
Piebald will send notifications for the events:
* The model finishes its task or response (technically, its generation completes without tool calls)
* The model calls one or more tools that require manual approval
* The generation fails due to a connection or server error (Pro)
It will only notify you for chats that you're not actively viewing, or if you're not in the app at all. It won't notify you for the current chat.
## Customizing notification string format (Pro)
Available in [Piebald Pro](https://piebald.ai/pricing)
If you have [Piebald Pro](https://piebald.ai/pricing), You can customize the title and body that are used for notifications. The default title and body for each notification type are as follows:
*Completion*
> **✓ \{\{chat\_title}}** \
> Complete after \{\{duration}}
*Tool Approval*
> **⏸ \{\{chat\_title}}** \
> \{\{tool\_name}} awaiting approval
*Error*
> **✗ \{\{chat\_title}}** \
> Error: \{\{error\_message}}
The following variables are available to use in titles and bodies:
* `{{chat_title}}` - Chat title
* `{{duration}}` - Generation time (completion only)
* `{{tool_name}}` - Tool name (tool approval only)
* `{{tool_count}}` - Number of tools (tool approval only)
* `{{error_message}}` - Error details (error only)
## Sounds
Piebald can play a sound when it sends notifications, with a configurable volume level independent from the system volume level. If you'd like to disable sounds for notifications, toggle **Notification Sounds** in **Settings → Notifications**.
Piebald Pro allows you to select from among the following sounds for task completion, pending tool call, and generation error notifications:
* Beep Up
* Shooting Star
* Keypress
* Buzz
* Bell
* Modulation
* Motor Buzz
* Starting Line
* Sweep
* Connected
* Clink
* Tick
* Confirmation
* Beep Down
* Beep Up 2
* Dual Tone
* Congrats
* Alarm Dark
* Alarm Light
* Loud Alarm
* Digital
* Error
* Pop
* Resume
* Menu Back
* Water Drop
* Electric
* Glitch
* Shimmer
# Keyboard shortcuts
Source: https://docs.piebald.ai/features/chat-experience/keyboard-shortcuts
## Esc to interrupt generation
Available in Piebald Basic (Free)
In Piebald, you can hit Esc at any time to interrupt generation:
Interrupting tool calls is also supported:
## Ctrl + R to trigger reverse incremental prompt search
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald features a terminal-/shell-like reverse incremental prompt search. You can search past prompts while in the message input by presssing Ctrl+R and then typing a portion of a past prompt. A link will also be displayed to the chat that contains the original message .
Here's a demo:
## Ctrl + -, Ctrl + =, and Ctrl + 0 for controlling font size zoom
Available in Piebald Basic (Free)
You can use these keyboard shortcuts for easy font size control:
* Ctrl + - to decrease the font size.
* Ctrl + = to increase the font size.
* Ctrl + 0 to reset the font size.
# Message editor
Source: https://docs.piebald.ai/features/chat-experience/message-editor
Piebald's message editor has features to make it easy and convenient to write long messages and prompts.
## Rich text editor
Available in Piebald Basic (Free)
The message editor can be switched into rich text mode. Click the paragraph/pilcrow icon:
Once in rich text mode, you can use keyboard shortcuts to activate various formatting. Press:
* Ctrl+B for **bold**
* Ctrl+I for *italic*
* Ctrl+U for underline
* Ctrl+Shift+X for strikethrough
To access the full list of formatting function, click the "AA" button at the right of the rich text button. This will display the rich text toolbar:
## Queuing messages
Available in [Piebald Pro](https://piebald.ai/pricing)
While the agent is working, you may want to send additional messages to iterate, steer, or queue up another task when it's done with its current work. Piebald has three modes for messaging during generation:
* **Interrupt & send immediately:** This will nterrupt the current generation or tool call immediately and send the message.
* **Queue & send as soon as possible:** This will send the message when the model is finished generating the current message or calling the current tool, but without forcibly interrupting it.
* **Queue as a follow-up:** This will send the message when the agent is completely finished with the task at hand, i.e. it responds with text only, without calling any tools.
Queued messages appear in a small "queue" box directly above the message input and can be reordered, discarded, or restored to the message input for editing.
## Slash commands
Available in Piebald Basic (Free)
Piebald supports slash commands to trigger various functionality in the app. All project-specific and global agent skills are also exposed as slash commands.
### Builtin slash commands
The builtin slash commands are restricted to a single action—opening a select menu, dropdown, or dialog. In the future, though, we'll enhance them to accept parameters and complete the action instead of just opening the dropdown or dialog.
* **`/mode`**, **`/profile`**, and **`/model`** open the Permission Mode, Profile, and Model selection dropdown menus.
* **`/paste`** pastes clipboard content as a markdown codeblock.
* **`/copy-chat`** copies the entire chat as markdown.
* **`/compact`** compacts the current chat's context.
* **`/clear`** clears the current context window by creating a new chat.
* **`/discord`** opens our Discord invite page ([https://piebald.ai/discord](https://piebald.ai/discord)).
* **`/settings`** opens the Settings dialog.
* **`/search`** opens the Search chats dialog.
* **`/help`** opens this site, the Piebald docs ([https://docs.piebald.ai](https://docs.piebald.ai)).
* **`/feedback`** opens the Report feedback popup.
## OpenCues integration
Available in Piebald Basic (Free)
Piebald features an integration with [OpenCues](https://opencues.com/), enabling an AI model to complete your prompt typed into the message box. OpenCues operates via *cues* and *blanks*. The configured LLM reads your text, looking for opportunities to correct or complete. Cues trigger the LLM at intervals as you type, and blanks are triggered when you end your prompt with a space and `_`. Read more on Piebald's OpenCues integration [here](/features/integrations/opencues).
If you don't wish to use OpenCues, you can hide the OpenCues button at **Settings > OpenCues > Show the OpenCues button**.
# Reactions
Source: https://docs.piebald.ai/features/chat-experience/reactions
Piebald allows you and model to react to each other's messages.
Available in Piebald Basic (Free)
Piebald allows you to use emojis to react to any of the model's messages. Reacting on a message will add a small notification to the context that the model will see the next time you send a message. (Reacting alone will not trigger generation.)
Piebald also allow the model to react to your messages. To avoid the model being too proactive with reactions, we only allow it to use reactions once you have reacted at least once, so if you don't want the model reacting to your messages, it won't as long as you don't react to its msesages.
You can use the same 8 emojis to react to messages as GitHub uses for issue/PR comment reaction—👍, 👎, ❤️, 🎉, 😄, 😕, 👀, and 🚀—and we plan to make this list customizable. The model can currently use any valid emoji to react to your messages, and we plan to restrict it to a customizable set.
Here's a demo of the user reacting to the model's message and the model reacting in turn:
# Code editor
Source: https://docs.piebald.ai/features/development-experience/code-editor
Available in [Piebald Pro](https://piebald.ai/pricing)
The Piebald code editor allows you to edit files right inside the app. Code is syntax-highlighted based on the file extension.
The code editor uses Monaco Editor, which is the same underlying editor that VS Code uses. The code editor will use the theme that you've specified in **Settings → Appearance → Code Block Themes**.
In future versions, we're planning enhancements that will align it more with state-of-the-art code editors like VS Code, Windsurf, Cursor, Antigravity, etc.
* Complete LSP auto-complete.
* LLM-driven code auto-complete.
* Next Edit Suggestions (NES) using providers like GitHub Copilot, Windsurf, Zed, etc.
### Opening the code editor
Open the code editor by clicking on a file in the [file browser](/features/development-experience/project-file-browser). Once open, the code editor allows you to modify the file and save it.
### Saving edits
To save, press Ctrl/Cmd+S or click the save button in the top right corner.
By default, long lines aren't wrapped. To wrap them, click the word wrap button in the top left corner.
### Markdown preview
In Piebald, you can preview Markdown files with the same rendering system that the main chat view uses. Open a markdown file and click the eye button in the top left corner.
This will toggle preview mode.
To toggle back to source mode, click the eye icon again.
# Git viewer
Source: https://docs.piebald.ai/features/development-experience/git-viewer
Available in [Piebald Pro](https://piebald.ai/pricing)
To view the changes in your Git repository, switch to the Git viewer by clicking the Git icon in the top right corner of the code sidebar.
Clicking on a file in the Git viewer sidebar will display the changes in that file.
Clicking **Open in Editor** will open the file in the [code editor](/features/development-experience/code-editor).
At the moment, the Git diff browser is very limited—the only functionality is viewing the diff. However, in near versions, we plan to add much more complete Git support—reverting individual changes, resolving merge conflicts, merging/rebasing branches, sophisticated support for PR/MR stacks, etc.
### Configuration
The Git viewer is configurable in a couple ways:
* Unchanged sections in a file can be set to expanded or folded.
* The diff view can be set to inline or side-by-side.
Both configuration options are available from the **Configuration** dropdown accessible using the switches button in the top right corner:
# Git worktrees
Source: https://docs.piebald.ai/features/development-experience/git-worktrees
Piebald has first-class support for Git worktrees.
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald has first-class support for Git worktrees—you can create, delete, and work in multiple worktrees at the same time.
When you're in a worktree within a project, the sidebar displays all Git worktrees in that project instead of other projects, allowing you to understand which worktrees have actively-generating chats, and which ones are waiting for tool calls.
# Integrated terminal
Source: https://docs.piebald.ai/features/development-experience/integrated-terminal
Available in [Piebald Pro](https://piebald.ai/pricing)
You can use Piebald's integrated terminal to run commands directly in the app without leaving to an external terminal.
The terminal pane is stuck to the bottom. However, in a future version, we plan to allow it to be moved to the side for a split view alongside chats.
The terminal will use the same theme that you've selected for codeblocks, located at **Settings → Appearance → Code Block Themes**.
### Creating new terminals
To create a new terminal, hover the project and click the small new terminal icon:
### Confirmation for closing active terminals
If you try to close a terminal that has a process actively running (e.g. `cargo check`, `pnpm install`, etc.), Piebald will warn you and ask you for confirmation before you terminate the process. You can choose to disable the confirmation dialog, and in the future, we'll add a setting to re-enable it.
# Project file browser
Source: https://docs.piebald.ai/features/development-experience/project-file-browser
Available in [Piebald Pro](https://piebald.ai/pricing)
Use Piebald's project file browser to find and open files for edit.
### Opening the file browser
To open the file browser, hover the project or worktree and click the small code icon:
This will switch the sidebar into the file browser view.
### Show hidden files
By default, the file browser hides hidden files. Click the eye button in the top right corner to show them.
### More coming
Currently, actions that can be performed in the file browser are restricted to opening files for editing. In the near future, we plan to enhance it with creating, deleting, renaming, and moving files. We also plan to add support for copying files from your main file mananger like Finder or File Explorer and pasting them into Piebald file browser to paste them into the project's file structure.
# Python environment sourcing
Source: https://docs.piebald.ai/features/development-experience/python-environment-sourcing
When Piebald detects Python environments (e.g. `conda` or a venv) globally or in your project folder, it provides a menu to activate an environment for use in future `RunTerminalCommand` tool calls. For example, if you have a venv in your project and you've activated that venv in Piebald, Python scripts that the model runs will have access to all packages installed in that venv.
Piebald currently supports the following Python environment managers:
* `conda`
* `pixi`
* `micromamba`
* venvs (through `uv` or `pip`)
Please [let us know](https://github.com/Piebald-AI/piebald-issues/issues/new) if you'd like support for another tool!
## Usage
Piebald automatically detects and displays a menu of all global and project-specific Python environments. When there are Python environments available, a badge is added to the top chat bar:
Clicking the badge will reveal a menu of all available Python environments.
Once you've selected a Python environment, the badge will update to show it and Piebald will get and cache environment variables from the environment that you selected. The length of time that the environment variables have been cached is displayed at the bottom of the Python environments menu.
### Getting environment variables
Piebald gets environment variables from your environment by executing a command using the Python environment manager's CLI.
On Windows:
* `conda` environments: `conda run -p cmd /c set`
* `pixi` environments: `pixi run -e cmd /c set`
* `micromamba` environments: `micromamba run -p cmd /c set`
On other platforms:
* `conda` environments: `conda run -p env`
* `pixi` environments: `pixi run -e env`
* `micromamba` environments: `micromamba run -p env`
The environment variables are parsed from the output and cached for use in future `RunTerminalCommand` tool calls.
# Managing chat tags
Source: https://docs.piebald.ai/features/management/managing-chat-tags
To create, rename, duplicate, change the color, or delete tags, go to **Settings → Chat Tags**. There you can also see how many chats use your tags.
### Merging tags
Piebald allows you to merge one tag into another. Hover the tag and click the merge button:
Then choose a tag to merge into, and click **Merge**:
Clicking Merge on the **fish** tag would merge it into the **shell** tag; at the end, there would only be the **bash** and **shell** tags.
## Project-specific tags
If you have some tags that make sense in only certain projects but that don't make sense globally, you can create a tag on that specific project. Hover the project, click the settings icon, and select **Settings**.
# Managing projects
Source: https://docs.piebald.ai/features/management/managing-projects
In Piebald, *projects* are the folders that you use to chat and perform agentic development. If your project is a Git repo with worktrees, the worktrees are treated as projects; otherwise, the folder itself is the project.
### Opening projects
To open a project, open the "NN PROJECTS" dropdown menu from the sidebar and click **Open folder...**
Once you've opened a folder, a chat will automatically be created in that project.
### Deleting projects
If you've had a few chats or agentic development sessions in a folder, but now you want to remove the projects, you can delete the project. Deleting the projects will also delete all chats in that folder.
Open the "NN PROJECTS" dropdown menu, hover your project, and click **Delete**:
You'll be prompted to confirm the deletion. Click **Delete**.
### Renaming projects
Projects can be renamed at any time. Hover your project and click the settings icon:
Then go to the **General** section and enter a new name for the project. The project's name instantly updates in the sidebar once you click off or press Enter.
# Managing providers
Source: https://docs.piebald.ai/features/management/managing-providers
In Piebald, you create **providers** for accounts or logins with LLM services (e.g. Anthropic, OpenAI, etc.). So you might create a provider for your Anthropic account, one for your OpenAI account, etc.
You can have multiple providers with the same service, e.g. a work and a home OpenAI account. You could even have multiple providers logged in with the same account.
Providers can be created, edited, and deleted. If you delete a provider, all chats that use that provider will be marked as having had their provider deleted, and the provider management dialog will display the provider as deleted with all its chats:
## Subscription limit monitor
Available in [Piebald Pro](https://piebald.ai/pricing)
When you're nearing your rate limits you'll likely want to watch them carefully. Piebald has a monitor up near the chat title that displays your remaining rate limit percentage (demo below).
You can configure various thresholds for the monitor—at what rate limit percentage it should be displayed, at what percentage it should turn yellow for warning, and at what percentage it should turn red for danger. These thresholds are configurable at **Settings → Rate Limits Monitor**.
## Hiding providers
If you have providers that you rarely use but don't want to delete, you can hide them from the main provider dropdown. Open Settings, go to **Providers**, open the actions menu dropdown on the provider that you want to hide, and click **Hide Provider**:
# Active chats warning on close
Source: https://docs.piebald.ai/features/managing-chats/active-chats-warning-on-close
Piebald warns you about active sessions when you close the app.
Available in [Piebald Pro](https://piebald.ai/pricing)
If you have Piebald sessions that are still generating, and you hit the close button, Piebald will warn you about those sessions. You can then:
* Pause the sessions.
* Close anyway, marking each generating session as cancelled.
# Chat sidebar
Source: https://docs.piebald.ai/features/managing-chats/chat-sidebar
Available in Piebald Basic (Free)
In Piebald, the chat sidebar lists all projects and their active chats. Chats that use the **Backlog** [chat status](/features/managing-chats/chat-statuses) are also displayed, while **Completed** and **Abandoned** chats are hidden in the **All Chats** section.
## Usage
### Viewing all chats
To view all chats, hover the project/worktree and click the small chats icon:
This will display all chats—active, backlog, completed, and abandoned.
### Creating a new chat
Click the small new chat icon to create a new chat:
This will create a new chat in that project. The new chat won't have any status, so will be active and will display in the sidebar until you mark it with a status.
You can also [create new terminals](/features/development-experience/integrated-terminal#creating-new-terminals) from the sidebar.
### Hiding projects
Projects can be hidden even if they have active or backlog chats. Click the cog icon and choose **Hide**.
### Showing hidden projects
If you've hidden a project or it's been automatically hidden, you can show it again at any time. Click the "NN PROJECTS" dropdown at the top of the sidebar and choose the project:
### Switching to the Code section
The Code section has all the tools you need to read and write code—file browser, code editor, Git viewer, code search, etc. To switch to the code view, click the small code icon:
### Compact mode
By default, lots of information about chats are displayed in the sidebar—chat tags, last modified date, etc. If you don't want to see all this information, and you just care about seeing the chat title, you can enable **compact mode**.
With compact mode off, the sidebar looks like this:
With compact mode on, the sidebar is transformed:
You can further compact the sidebar and reduce cognitive complexity by hiding backlog chats and subagent chats.
### Disabling worktree coloring
If you don't like worktrees being colored, you can disable the **Color worktree** configuration option in the configuration panel shown above. Worktrees will then be displayed in the same color as active chats (e.g. the "Understanding the project" chat above).
### Filtering by chat tags
If you've assigned tags to your chats, you can filter all chats by those tags. If you have compact mode off, you can click a tag to filter by it. Clicking other tags will filter by those tags too—e.g. clicking the "greeting" tag would filter for chats that have that tag, and clicking the "introduction" tag would filter for chats that have both tags. Clicking on either one would remove that tag from the filter.
To filter by any tag, and to see the full list of tags being used for filter, open the configuration panel by clicking the button in the top right corner. Then open the "Filter by tag" dropdown at the bottom of the panel.
### Other chat details displayed in the sidebar
The sidebar also displays other details about chats:
* **Subagent** chats are displayed under their respective parent chats. They're displayed in smaller text and in a more narrow row.
* Chats with [**goals**](/features/agentic/goals) display with a denim-colored "active goal" indicator.
# Chat statuses
Source: https://docs.piebald.ai/features/managing-chats/chat-statuses
Available in Piebald Basic (Free)
In Piebald, once you're done with a chat, you can assign it a **status** of **Done**, **Backlog**, or **Abandoned**. Chats with the Done or Abandoned status are hidden from your active chat sidebar. Backlog chats are shown in a subsection of the project/worktree. If you don't assign any status, the chat will be considered and marked as in progress.
### Marking chats
You can assign a status to a chat using three methods:
**Status icon next to the chat title:** Up in the header bar at the top of the chat view, there's a gray circle next to the chat title. Clicking it reveals a dropdown containing the chat statuses.
**Using the chat actions menu in the sidebar:** Click the cog icon next to a chat in the sidebar:
**Ctrl/Cmd hover and click chats in the sidebar:** Hold Ctrl/Cmd, hover a chat, and click one of the status buttons that appear:
To unmark a chat, you can hold Ctrl/Cmd, hover a chat in the sidebar, and uncheck the status that the chat uses, or you can use the dropdowns detailed above and click **Clear Status**.
### Viewing all chats
To view all chats regardless of their statuses, hover the project or worktree that contains the chats and click the chats button:
# Chat tagging
Source: https://docs.piebald.ai/features/managing-chats/chat-tagging
Organize chats in Piebald with automatic or manual tagging.
Available in [Piebald Pro](https://piebald.ai/pricing)
If you have a lot of chats, it can be helpful to assign tags to them. You can filter chats by their assigned tags, and they can tell you at a glance what areas a particular chat are about.
Tags are created in **Settings → Chat Tags.** Chat tags require [Piebald Pro](https://piebald.ai/pricing).
## Automatically creating tags
Tags can be automatically assigned to a new chat by an AI when it generates a title for it. The system prompt for the **Title & Tag Generation** built-in profile must include instructions to generate tags. By default it does; if it doesn't, click "Reset to Default" to reset it to a default system prompt that includes the instructions.
Here's a screenshot of the title/tag generations model suggesting a new tag:
Automatic existing tag assignment and new tag suggestion are enabled by default; go to **Settings → Title & Tag Generation** and turn off **Enable automatic chat tagging** or **Allow LLM to suggest creating new tags** to disable them.
## Filtering chats by tag
If you have tags created and assigned to chats, you can filter chats by tags. Click the icon in the top-right corner of the chat sidebar and select the tag or tags to filter by:
## Manually tagging a chat
If you'd like to manually assign a tag to a chat, click on the icon on a chat in the sidebar and choose ** Tag**. There must be some tags created in the settings beforehand.
Then select one or more tags from the dialog and click **Save Tags.**
# Relocating & duplicating
Source: https://docs.piebald.ai/features/managing-chats/relocating-and-duplicating
Seamlessly move chats from one worktree to another and duplicate chats.
## Relocating
Available in [Piebald Pro](https://piebald.ai/pricing)
Sometimes you might create a chat in one worktree, and work with the AI to build a plan, but then you want to implement that plan in the same chat but in a different worktree. Piebald allows you to **relocate** chats from one directory to another, which will move a chat to the specified directory and automatically rewrite all occurences of the old path to the new path across all user and AI messages and tool call inputs and outputs.
To duplicate a chat, click the icon on a chat in the sidebar and choose ** Relocate.** You'll be prompted to select a target directory. Once you select one, Piebald will update the entire chat history to point to the new path, and the AI will never know that it worked in the old directory.
You can also relocate a chat by manually editing the directory path in the config sidebar. To do that, open the chat config sidebar by clicking the icon in the top-right corner of the chat view, and edit the **Working Directory** field, and click **Relocate:**
Chat relocation requires [Piebald Pro](https://piebald.ai/pricing).
## Duplicating
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald also allows you to duplicate chats. All user and AI messages and all tool calls are preserved in the copy.
To duplicate a chat, click the icon on a chat in the sidebar and choose ** Duplicate.**
Chat duplication requires [Piebald Pro](https://piebald.ai/pricing).
# Sharing chats
Source: https://docs.piebald.ai/features/managing-chats/sharing-chats
Share Piebald chats with friends or colleagues.
Available in [Piebald Pro](https://piebald.ai/pricing)
Piebald allows you to share local chats with anyone on the internet. To share a chat, click the ellipsis button in the chat title bar or on the chat in the sidebar.
When you share a chat, you're prompted to select the number of days that that chat should live for before expiring. You can choose 1, 3, 5, or 7 days, and after that time the entire chat will be deleted and won't be accessible any longer.
Sharing a chat includes all data in the chat, including messages, tool calls, images/files attached to the chat.
Shared chats are visible to anyone with the link. Only share the link with people you want to be able to see the chat data.
# OpenCues
Source: https://docs.piebald.ai/integrations/opencues
[OpenCues](https://opencues.com/) is an open standard for AI autocompletion anywhere based on what you type. *Cues* react to what you've written and surface configured suggestions, while *blanks* act on demand—when you end a line with `_`, the model fills in the rest. In Piebald, you can use OpenCues in the message editor to autocomplete or correct the prompt that you're typing.
## Configuration
To configure OpenCues in Piebald, you must setup cue and/or blank files in `~/.cues` and configure a provider and model to be used with OpenCues.
1. Create a new chat.
2. Click the OpenCues button in the message editor.
3. Click **Create starter files**.
4. Once it's done, click **Settings**.
5. You should be taken to **Settings → OpenCues**.
6. Select a provider and model.
## Using OpenCues
To use OpenCues, type a message to a model, and before sending it, wait for OpenCues to activate and transform your message.
1. Create a new chat.
2. Type a message and **don't send it yet**.
3. If you've setup cues, wait for OpenCues to activate and transform your message.
4. Otherwise, end your message with a space and `_` and it'll activate.
Once your prompt has been transformed, it'll be highlighted:
## Hiding the OpenCues button in the message editor
If you don't want to use OpenCues, you can hide the OpenCues button in the message editor.
1. Open **Settings → OpenCues**.
2. Disable **Show the OpenCues button**.
## Errors
If you're getting errors with OpenCues, check these causes.
1. Make sure that you're not using a reasoning model. The current max tokens for OpenCues is 512, which is too small for reasoning models.
2. Check your authentication for your configured provider. Create a new chat with your provider and model and send a test message.
# Introduction
Source: https://docs.piebald.ai/introduction
Welcome to Piebald!
[Piebald](https://piebald.ai) is a desktop & web app that makes it easier than ever to do agentic development, while at the same time giving you complete control over the configuration, context, and flow, all from a powerful desktop & web UI that runs on macOS, Windows, and Linux.
Piebald comes in two plans: **Basic** and **Pro.** Head over to our [pricing](https://piebald.ai/pricing) page for details.
# Quickstart
1. [**Download** Piebald for your platform](https://piebald.ai/downloads)
If you're on Arch Linux, you can use the community-maintained [AUR package](https://aur.archlinux.org/packages/piebald-bin).
2. **Sign in** with GitHub, Google, or Microsoft, or create an account directly with name and email
3. **Add a provider** (e.g. paste an OpenAI or Anthropic API key or import existing credentials from Claude Code, Codex, or Gemini CLI)
4. **Open a folder**
5. **Give an order** or **ask a question** about your codebase
# Introduction
Piebald is an **agentic development tool**, also known as an AI coding agent. If you're familiar with Claude Code, Cursor, Gemini CLI, Codex, or similar tools, you already know how to use Piebald.
To get started, open a folder in Piebald. A new chat will be created, and you can begin giving orders or asking questions just as you would with other tools.
# Reporting issues
We use GitHub for our public issue tracker. Please feel free to report any issues you encounter there: [https://github.com/Piebald-AI/piebald](https://github.com/Piebald-AI/piebald)
We also would love feedback on which features you'd like to see, so please open issues for feature requests as well.
# Log file
Source: https://docs.piebald.ai/log-file
Troubleshoot issues with Piebald.
Piebald generates a log file containing debugging information that you can use in an effort to understand bugs and unexpected behavior.
The log files are named after the current date in the format `YYYY-MM-DD.log`. The folder in which they're generated varies by platform:
* **macOS:** `~/Library/Application Support/piebald/logs`
* **Windows:** `%USERPROFILE%\AppData\Roaming\piebald\logs`
* **Linux:** `~/.local/share/piebald/logs`
# Figma
Source: https://docs.piebald.ai/mcp-servers/figma
Use Figma's remote MCP server in Piebald.
Requires Piebald v0.3.0 or later. We don't yet support images being returned
from MCP tools, so tools like `get_screenshot` won't be useful yet (planned
for v0.4.0).
This is a workaround while we wait for Figma to officially approve Piebald for
use with their MCP server.
To use Figma's [official MCP server](https://help.figma.com/hc/en-us/articles/32132100833559-Guide-to-the-Figma-MCP-server) inside Piebald, you'll need to create a Figma app and enable the `mcp:connect` OAuth scope. Unfortunately, Figma's developer UI doesn't display that scope, so you'll need to use a workaround and add it manually by **replaying the app update request from your browser's DevTools**.
Make sure to save the Client Secret when Figma shows it; it's necessary for Figma MCP
server OAuth and is only shown once.
1. Go to [https://www.figma.com/developers/apps](https://www.figma.com/developers/apps).
2. Click **Create a new app**.
3. Enter a name for the app.
4. Select an owner.
5. Click **Create app**.
6. Copy the Client ID, and save the Client Secret.
7. Click **Done**.
8. In the configuration dialog that should automatically open, go to **OAuth credentials** in the left-hand sidebar.
9. Under **Redirect URLs**, click **Add a redirect URL**.
10. Enter `https://piebald.ai/desktop/redirect` and click **Add**.
11. Go to **OAuth scopes** in the left-hand sidebar.
12. Open your browser's DevTools, and go to the **Network** tab.
13. Enable any random scope, such as **Users** → `current_user:read`.
14. In the Network tab, find the update request. The URL should look like `https://www.figma.com/api/oauth/apps/`.
15. Copy the request as cURL.
You don't need to use `curl`. You can send the request with any HTTP
client, which is especially more convenient on Windows. Whatever client
you use, make sure to include all of the headers from the copied request.
16. Change the scope in the request body to `mcp:connect`.
17. Send the request. For cURL, execute the modified command.
Some values in the cURL command were truncated for brevity in the
screenshot above; the actual command will be much larger.
18. In Piebald, go to **Settings → MCP Servers** and click **Add → Add Server**.
19. Enter a name for the MCP server, such as `figma`.
20. For **Transport Type**, select **HTTP**.
21. Enter `https://mcp.figma.com/mcp` as the Server URL.
22. Expand **Advanced OAuth Settings**, then paste the Client ID and Client Secret from your Figma app.
23. Click **Create & Authenticate** at the bottom of the dialog.
24. Complete the Figma authorization flow in your browser.
25. Return to Piebald, and check that the MCP server is green.
You should now be able to use the Figma MCP server!
# Slack
Source: https://docs.piebald.ai/mcp-servers/slack
Use Slack's remote MCP server in Piebald.
To use Slack's [official MCP server](https://docs.slack.dev/ai/slack-mcp-server/) inside Piebald, you'll need to make a Slack app inside the workspace you're going to log in with. Then, you can add Slack as an HTTP MCP server with a custom OAuth Client ID.
1. Go to [https://api.slack.com/apps](https://api.slack.com/apps).
2. Click **Create an App** (or **Create New App**).
3. Choose **From a manifest**.
4. Choose the workspace you'll be using the MCP server with, and click Next.
5. Paste the following into the **JSON** tab of the dialog, inside the code editor, replacing all existing text:
```json theme={null}
{
"display_information": {
"name": "Piebald",
"description": "The ultimate agentic AI control experience for developers.",
"background_color": "#2c2d30",
"long_description": "Piebald is a desktop & web app that makes it easier than ever to do agentic development, while at the same time giving you complete control over the configuration, context, and flow, all from a powerful desktop & web UI that runs on macOS, Windows, and Linux."
},
"oauth_config": {
"redirect_urls": [
"https://piebald.ai/desktop/redirect"
],
"scopes": {
"user": [
"canvases:read",
"canvases:write",
"channels:history",
"chat:write",
"groups:history",
"im:history",
"mpim:history",
"search:read.files",
"search:read.im",
"search:read.mpim",
"search:read.private",
"search:read.public",
"search:read.users",
"users:read",
"users:read.email"
]
},
"pkce_enabled": false
},
"settings": {
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}
```
6. Click **Next**.
7. You should be presented with a **Review summary & create your app** dialog. Click **Create**.
8. From the **Features** section in the left-hand sidebar, go to **OAuth & Permissions**.
9. In the **Proof Key for Code Exchange (PKCE)** section, click the **Opt In** button.
8. You should be prompted again to permanently enable PKCE. Click **Opt In**.
9. From **Features** in the sidebar, go to **Agents & AI Apps**.
10. Enable **Model Context Protocol**.
11. From the **Settings** section in the sidebar, go to **Basic Information**.
12. Copy the value of the **Client ID** input box.
13. In Piebald, go to **Settings → MCP Servers** and click **Add → Add Server**.
14. Enter a name for the MCP server (e.g. **Slack**).
15. For **Transport Type**, select **HTTP**.
16. Enter `https://mcp.slack.com/mcp` as the Server URL.
17. Expand **Advanced OAuth Settings**, and then paste the Client ID you copied from Slack into the Client ID input box.
17. Click **Create & Authenticate** at the bottom of the dialog.
18. After a few seconds, a browser tab should open, be prompting you to allow Piebald to access Slack. Click **Allow**.
19. Return to Piebald, and check that the MCP server is green:
20. Close the Settings dialog.
You should now be able to use the Slack MCP server!
# All supported providers
Source: https://docs.piebald.ai/providers/all-supported-providers
To connect to an LLM provider in Piebald, you create [**providers**](/features/management/managing-providers) for each account, login, or API key.
These are the provider types currently-supported by Piebald:
* **OpenAI**
* ChatGPT sign-in.
* OpenAI API keys.
* [Custom OpenAI-compatible servers](/features/providers/using-a-custom-base-url-and-api-key#).
* **Anthropic**
* Claude.ai sign-in.
* Anthropic API keys.
* [Custom Anthropic-compatible servers](/features/providers/using-a-custom-base-url-and-api-key#).
* **Google**
* Gemini Code Assist sign-in.
* [Antigravity sign-in](/features/providers/google-antigravity).
* Gemini (Google AI Studio) API keys.
* [Custom Google AI Studio-compatible servers](/features/providers/using-a-custom-base-url-and-api-key#).
* **SpaceXAI** [SuperGrok sign-in](https://grok.com/supergrok).
* **GitHub Copilot** sign-in.
* **Amazon Bedrock**
* AWS CLI, environment variables, or IAM role.
* API key.
* Access key.
# Amazon Bedrock
Source: https://docs.piebald.ai/providers/amazon-bedrock
Use models from Amazon Bedrock in Piebald.
Available in Piebald Basic (Free)
Piebald supports using models hosted on [Amazon Bedrock](https://aws.amazon.com/bedrock/), such as Claude, Amazon Nova, etc. If you have AWS credentials, you can create an Amazon Bedrock provider in Piebald.
There are two ways to create an Amazon Bedrock provider in Piebald: by specifying an AWS access key ID and a secret access key manually, and by automatically detecting credentials through the environment.
When detecting AWS credentials from the environment, Piebald goes through 4 steps. If credentials are found, the search is stopped, so these steps are sorted in descending order of priority:
1. `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables.
2. [Shared credentials](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) (`~/.aws/credentials`)
3. IAM role if running on EC2/ECS/Lambda
4. AWS SSO
## Creating an Amazon Bedrock provider
To create an Amazon Bedrock provider, go to **Settings → Providers → New Provider → Amazon Bedrock**. If you have a specific access key ID + secret access key pair, choose **Access Key**; if you're using Bedrock with an API key, choose **API key**; otherwise choose **Default Credentials** to have Piebald detect credentials from the environment.
Once the provider is created you'll be able to use it in chats.
## IAM permissions
Piebald uses the newer [Amazon Bedrock Converse API](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html) (instead of the older Invoke API) to communicate with models on Bedrock, so you'll need to allow the [`bedrock:Converse`](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) and [`bedrock:ConverseStream`](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html) APIs for the IAM entity you use. For example:
```json theme={null}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:Converse",
"bedrock:ConverseStream"
],
"Resource": "*"
}
]
}
```
## Bedrock API keys
We don't support [Bedrock API keys](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-how.html) yet. However, if you need to use Bedrock API keys, [open an issue](https://github.com/Piebald-AI/piebald-issues/issues/new) and let us know!
## Common errors
You may encounter various errors when using different Bedrock models with different configurations in Piebald. We're working to stabilize our support for Amazon Bedrock and make errors more intuitive, but in the meantime, below is a list of several errors with explanations.
Errors coming from AWS will have the following format:
> Bedrock converse\_stream request failed: \Exception - \
#### "Invocation of model ID *\* with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model."
You can't use the foundation model directly; you need to use an [inference profile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html) instead. Look for the same model name but prefixed with a region like "GLOBAL" (`global.`) or "US" (`us.`).
#### "The model returned the following errors: Malformed input request: `#/toolConfig/tools/10`: extraneous key `[cachePoint]` is not permitted, please reformat your input and try again."
The model doesn't support caching tool definition. (It might still support caching *messages* though.) Turn off caching tool definitions in the chat settings → **Overrides → Amazon Bedrock overrides → Cache Tool Definitions**.
#### "The model is unsupported for streaming."
You've specified a model that doesn't support text output, like an embeddings or image generation model. Piebald does not support using a non-text mode.
#### "You invoked an unsupported model or your request did not allow prompt caching. See the documentation for more information."
As the error message says—either you used a model that your account doesn't have access to, or the model you're using doesn't support prompt caching, which is enabled in the current chat.
To disable prompt caching, go to the \*\*Settings → Overrides → bedock → enable prompt caching.
If prompt caching is disabled and you're still getting the error, then it's because you don't have access to the model on Bedrock. If you're a first-time user of Claude models on Bedrock, you need to submit use case details in order to get access; see [Claude Code docs](https://code.claude.com/docs/en/amazon-bedrock).
#### "This model doesn't support tool use in streaming mode."
This error means that the model you're using doesn't support tools at all. Disable tool use in the chat/profile settings **→ Configuration → Enable tools**.
#### "The model returned the following errors: Malformed input request: `#`: extraneous key `[thinking]` is not permitted, please reformat your input and try again."
You've configured Claude reasoning for the chat/profile but you're using a non-Claude model. Disable Claude reasoning or use a Claude model
#### "The model returned the following errors: Malformed input request: `#`: extraneous key `[reasoningConfig]` is not permitted, please reformat your input and try again."
Same as above; you've configured Nova reasoning for the chat/profile but you're using a non-Nova model. Disable Nova reasoning or use a Nova model
#### "Model access is denied due to IAM user or service role is not authorized to perform the required AWS Marketplace actions (`aws-marketplace:ViewSubscriptions`, `aws-marketplace:Subscribe`) to enable access to this model. Refer to the Amazon Bedrock documentation for further details. Your AWS Marketplace subscription for this model cannot be completed at this time. If you recently fixed this issue, try again after 5 minutes."
Some models on Bedrock are served via the marketplace, and if you're using one, Bedrock will try to enable it from the marketplace automatically. However, if your AWS credentials don't allow the necessary AWS actions (`aws-marketplace:ViewSubscriptions` and `aws-marketplace:Subscribe` in this case), it will be unable to do that. See [this Amazon Bedrock docs page](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html).
# Claude Pro/Max
Source: https://docs.piebald.ai/providers/claude-max
Available in Piebald Basic (Free)
Piebald allows you to use your Claude Pro/Max subscription allows subscriptions. Claude Max providers internally use Claude Code to communicate with Anthropic's API so there's no risk of your account getting banned.
You can use your Claude Code installation from PATH, specify a path to the Claude Code executable, or allow Piebald to manage Claude Code installation and updates for you.
# GitHub Copilot
Source: https://docs.piebald.ai/providers/github-copilot
Use your GitHub Copilot subscription from Piebald.
Available in Piebald Basic (Free)
Piebald supports using your GitHub Copilot subscription to use for generation.
To sign in to your GitHub Copilot subscription in Piebald:
1. Go to **Settings → Providers → New Provider → GitHub Copilot → Sign in with GitHub**
2. Choose "GitHub.com"
3. Copy the code displayed on screen
4. Open the URL in your browser ([https://github.com/login/device](https://github.com/login/device))
5. Sign in to your GitHub account if you're not already signed in
6. Paste in the code and click Continue
7. You'll be asked to grant the **[@Piebald-AI](https://github.com/Piebald-AI)** organization read-only access to your GH account. Click "Authorize Piebald-AI":
8. Go back to Piebald and wait for a few seconds for the authentication finish
# Google Antigravity
Source: https://docs.piebald.ai/providers/google-antigravity
Use your Google Antigravity subscription in Piebald.
Available in Piebald Basic (Free)
Piebald supports using models through your [Google Antigravity](https://antigravity.google/) subscription.
**Important note**
Using your Antigravity subscription in third-party applications (including Piebald) may violate Google's Antigravity terms of service. Some users have reported that their accounts were **banned** (silently and/or permanently), especially when using newly created Google accounts.
By using the Antigravity provider in Piebald, you assume all risks associated with using a third-party tool to authenticate to Antigravity.
Because of the risks involved with using Antigravity in Piebald, we've only performed preliminary testing on Antigravity support. If you find a bug, please [report it](https://github.com/Piebald-AI/piebald-issues/issues/new)!
## Logging in with Antigravity
To login to your Antigravity subscription, create a new Antigravity provider through **Settings → Providers → New Provider → Google → Sign in to Antigravity**:
Clicking **Sign in to Antigravity** will open a new tab for you to authenticate with your Google account. The Google sign in page will automatically redirect or provide an authentication code. If it doesn't redirect, copy the authorization code and paste it back into the **Sign in to Antigravity** dialog in Piebald:
Once you've finished the Antigravity authentication process, you should be able to use your new Antigravity provider to chat with the same models that are provided in the Antigravity IDE.
# Using a custom base URL and API key
Source: https://docs.piebald.ai/providers/using-a-custom-base-url-and-api-key
We're planning first-class support for many providers and API endpoints, but in the meantime, you can use any OpenAI-comptible, Anthropic-compatible, or Google-compatible API endpoint and API key in Piebald right now.
## Creating a custom OpenAI-compatible provider
1. Open the settings dialog (the gear icon at the bottom of the sidebar).
2. Go to **Providers**.
3. Go to **New Provider → OpenAI → Custom OpenAI-compatible**.
4. Enter a provider name, base URL, and API key.
5. Select **Chat Completions API**.
**Note:** If you encounter errors using this provider, try editing the provider and switching the API type to **Responses API**. Some APIs support OpenAI's Reponses API rather than the Chat Completions API.
6. Click **Add Provider**.
7. Your new provider will be displayed and be ready to use.
## Creating a custom Anthropic-compatible provider
1. Open the settings dialog (the gear icon at the bottom of the sidebar).
2. Go to **Providers**.
3. Go to **New Provider → Anthropic → Custom Anthropic-compatible**.
4. Enter a provider name, base URL, and API key.
5. Click **Add Provider**.
6. Your new provider will be displayed and be ready to use.
## Creating a custom Google-compatible provider
1. Open the settings dialog (the gear icon at the bottom of the sidebar).
2. Go to **Providers**.
3. Go to **New Provider → Google → Custom Google AI Studio-compatible**.
4. Enter a provider name, base URL, and API key.
5. Click **Add Provider**.
6. Your new provider will be displayed and be ready to use.
# Proxying Piebald
Source: https://docs.piebald.ai/proxying-piebald
Piebald Pro supports routing all traffic through a proxy. If you've configured Piebald to use the system proxy, it'll automatically detect it and route all traffic through it. Otherwise, you can manually configure proxy details for Piebald to route through.
## System proxy
Available in [Piebald Pro](https://piebald.ai/pricing)
To configure Piebald to detect and pass through the system proxy, go to **Settings → Proxy** and select **System Proxy**. This option is selected by default for all Pro users.
When configured to use the system proxy, Piebald automatically detects **HTTP**, **HTTPS**, and **SOCKS5** proxies. If Piebald detects that authentication is required to route requests through the detected proxy, it'll attempt to use the user's Windows credentials and authenticate through SSO. If that doesn't work, Piebald will display a native dialog for users to sign in to the proxy.
## Manually-configured proxy
Available in [Piebald Pro](https://piebald.ai/pricing)
To manually configure Piebald to pass through a proxy, follow these steps:
1. Open **Settings → Proxy**.
2. Choose **Manual proxy**.
3. Configure the protocol (HTTP, HTTPS, or SOCKS5) and URL.
4. Optionally enter a username and password.
5. Optionally configure the bypass list (see below for details).
### Bypass rules
*Bypass rules* tell apps that support proxies, like Piebald, to skip routing certain URLs through the proxy. In Piebald, bypass rules take the form of a comma-separated list. You can bypass addresses of these forms:
* Exact hostnames (e.g. `build-server`).
* Domain patterns (e.g. `.example.com` or `*.example.com`).
* IP addresses (e.g. `192.168.50.134`).
* CIDR ranges (e.g. `10.0.0.0/8`).
* `*` to bypass the proxy for every URL.
So, to bypass all of the examples above, you'd use the following bypass list:
```
build-server,.example.com,*.example.com,192.168.50.134,10.0.0.0/8
```
## Environment variable proxy
Available in Piebald Basic (Free)
Piebald Pro and Basic automatically searches for the proxy environment variables listed below and uses them to route requests. The proxy environment variables will override the system proxy if you've configured it (but they won't override manual configuration or direct routing if that's what you've configured).
Piebald supports these proxy environment variables:
* **`http_proxy` / `HTTP_PROXY`** is used for routing requests to HTTP URLs.
* **`https_proxy` / `HTTPS_PROXY`** is used for routing requests to HTTPS URLs.
* **`ftp_proxy` / `FTP_PROXY`** is used for routing requests to FTP (File Transfer Protocol) URLs.
* **`all_proxy` / `ALL_PROXY`** is used when a request is made and one of the other environment variables aren't set.
* **`no_proxy` / `NO_PROXY`** is used as comma-separated list of what URLs should *not* be routed through the proxy, i.e. the bypass rules list detailed above.
If none of these environment variables are set, but `SOCKS_SERVER` *is*, and `SOCKS_VERSION` is set to `5`, Piebald will route traffic through that server. But Piebald doesn't support `SOCKS_VERSION` being set to `4`. Note that Piebald doesn't support these environment variables in their lowercase forms.
Piebald currently doesn't support `auto_proxy` / `AUTO_PROXY` environment variables for PAC file paths.
## Proxy auto-config (PAC) files
If the configured proxy has a proxy auto-config (PAC) file, Piebald will read it and compiled it. On subsequent requests, Piebald evaluates the compiled PAC file and to determine which proxy, if any, to use.
As noted above, PAC files specified by `auto_proxy` / `AUTO_PROXY` environment variables aren't read or evaluated currently.
## Requests that pass through proxies regardless of configuration
Some requests required by Piebald functionality still pass through the system proxy even if you configure the app to not use any proxy. This is to ensure that functionality isn't broken by these requests failing. These requests include:
* WorkOS sign-in.
* Subscription checks.
* Feedback submission.
* Google Fonts listing.
* Automatic error reporting.
* Telemetry.
# Report feedback
Source: https://docs.piebald.ai/report-feedback
How to report feedback on Piebald.
Available in Piebald Basic (Free)
Reporting feedback on Piebald is easy—hit the smile icon in the sidebar or navigate to **Help → Submit Feedback**. A dialog will appear in the bottom right corner allowing you to submit a feature request, bug report, or general enhancement suggestion.
## Reporting generation errors
When an error occurs during message generation, you can optionally report the error via a convenient "Report this error" button under the error message.
This is especially helpful when the error is a Piebald bug, because you can optionally choose to attach the entire content of your chat to the feedback, which will enable us to debug the problem much more easily. Data submission is subject to our [Privacy Policy](https://piebald.ai/privacy).
# Roadmap
Source: https://docs.piebald.ai/roadmap
Here's our immediate public roadmap. We have ideas for many more features besides these that we're planning to explore in the future, but this is what we're actively working on, planning next, and considering for the near future.
If there's something not on this list that you want to see added, let us know on [GitHub](https://github.com/Piebald-AI/piebald-issues/issues/new) or [Discord](https://piebald.ai/discord) and we'll prioritize it!
# In progress
* Remote environment support
* Enterprise proxy support
* Enhanced chat search
* Codebase indexing/searching
* Context editing
* Storing and syncing conversations and configurations with Piebald Cloud
* [+ Add feature here](https://github.com/Piebald-AI/piebald-issues/issues/new)
# Planned
* Enhanced model info detection (e.g. max context)
* Accurate token usage metrics
* Statistics page
* Improved profile capabilities and integration with subagents
* Running local models
* Support for image generation models
* Plugin system
* [+ Add feature here](https://github.com/Piebald-AI/piebald-issues/issues/new)
# Future
* More compaction strategies
* Custom themes
* Edit/command sandboxing
* Markdown styling customizations
* Replay streamed responses
* [+ Add feature here](https://github.com/Piebald-AI/piebald-issues/issues/new)
# Done
Also see our full [changelog](/changelog) for the details of each release.
### [v0.5.2](/changelog#v0-5-2)
* [**Viewing and redeeming Codex/ChatGPT rate limit resets**](https://docs.piebald.ai/changelog#v0-5-2)
* [**Option to configure default path for worktrees**](https://docs.piebald.ai/changelog#v0-5-2)
* [**Enhanced tool call rendering for Xcode MCP tool calls**](https://docs.piebald.ai/changelog#v0-5-2)
* [**Option to make the enter key add a new line instead of sending**](https://docs.piebald.ai/changelog#v0-5-2)
### [v0.5.0](/changelog#v0-5-0)
* [**Goals**](https://docs.piebald.ai/changelog#goals)
* [**Python environment detection**](https://docs.piebald.ai/changelog#python-environment-detection-pro)
* [**Terminal command timeouts**](https://docs.piebald.ai/changelog#other)
* [**Desktop-style top bar for web mode**](https://docs.piebald.ai/changelog#other)
* [**Gemini 3.5 Flash in Antigravity**](https://docs.piebald.ai/changelog#other)
### [v0.4.4](/changelog#v0-4-4)
* [**HTTP performance and stability fixes**](https://docs.piebald.ai/changelog#v0-4-4)
### [v0.4.3](/changelog#v0-4-3)
* [**Read-only detection and auto-approval for powershell commands**](https://docs.piebald.ai/changelog#v0-4-3)
### [v0.4.0](/changelog#v0-4-0)
* [**New task-centric sidebar**](https://docs.piebald.ai/changelog#new-task-centric-sidebar)
* [**Explicit chat lifecycle management**](https://docs.piebald.ai/changelog#explicit-chat-lifecycle-management)
* [**Smooth streaming (Pro)**](https://docs.piebald.ai/changelog#smooth-streaming-pro)
* [**Support for MCP tool calls that return images**](https://docs.piebald.ai/changelog#support-for-mcp-tool-calls-that-return-images)
* [**Enhanced tag support**](https://docs.piebald.ai/changelog#enhanced-tag-support)
* [**Claude Code interactive**](https://docs.piebald.ai/changelog#claude-code-interactive)
### [v0.3.2](/changelog#v0-3-2)
* [**`--version` flag & `.github/copilot-instructions.md`**](https://docs.piebald.ai/changelog#v0-3-2)
### [v0.3.0](/changelog#v0-3-0)
* [**Claude Code provider**](https://docs.piebald.ai/changelog#claude-code-provider)
* [**Claude Code's hooks**](https://docs.piebald.ai/changelog#claude-codes-hooks)
* [**Subscription usage limit monitor (Pro) & token count display**](https://docs.piebald.ai/changelog#subscription-usage-limit-monitor-pro--token-count-display)
* [**Chat sharing (Pro)**](https://docs.piebald.ai/changelog#chat-sharing-pro)
* [**Passing a prompt from the command line**](https://docs.piebald.ai/changelog#passing-a-prompt-from-the-command-line)
* [**Bedrock API keys**](https://docs.piebald.ai/changelog#bedrock-api-keys)
### [v0.2.7](/changelog#v0-2-7)
* [**Linux ARM64 build**](https://docs.piebald.ai/changelog#v0-2-7)
### [v0.2.5](/changelog#v0-2-5)
* [**Default permission mode**](https://docs.piebald.ai/changelog#default-permission-mode-and-bug-fixes)
### [v0.2.3](/changelog#v0-2-3)
* [**Manual MCP header and OAuth configuration**](https://docs.piebald.ai/changelog#manual-mcp-header-and-oauth-configuration)
* [**Background color customization**](https://docs.piebald.ai/changelog#background-color-customization)
### [v0.2.0](/changelog#v0-2-0)
* [**Integrated file browser, Git viewer, and code editor (Pro)**](https://docs.piebald.ai/changelog#integrated-file-browser-git-viewer-and-code-editor-pro)
* [**Integrated terminal (Pro)**](https://docs.piebald.ai/changelog#integrated-terminal-pro)
* [**Git worktrees (Pro)**](https://docs.piebald.ai/changelog#git-worktrees-pro)
* [**Skills as slash commands**](https://docs.piebald.ai/changelog#skills-as-slash-commands)
* [**Message queuing (Pro)**](https://docs.piebald.ai/changelog#message-queuing-pro)
* [**Qwen OAuth support**](https://docs.piebald.ai/changelog#qwen-oauth-support)
* [**Localization**](https://docs.piebald.ai/changelog#localization)
* [**Remote/HTTP MCP servers**](https://docs.piebald.ai/changelog#remotehttp-mcp-servers)
* [**Tool calls are now interruptible**](https://docs.piebald.ai/changelog#tool-calls-are-now-interruptible)
### [v0.1.22](/changelog#v0-1-22)
* [**VS Code theme importing for code blocks (Pro)**](https://docs.piebald.ai/changelog#vs-code-theme-importing-for-code-blocks-pro)
* [**Branch renaming (Pro)**](https://docs.piebald.ai/changelog#branch-renaming-pro)
* [**Hit 'Esc' to interrupt generation**](https://docs.piebald.ai/changelog#hit-esc-to-interrupt-generation)
### [v0.1.21](/changelog#v0-1-21)
* [**Web mode**](https://docs.piebald.ai/changelog#web-mode)
* [**Customize accent color**](https://docs.piebald.ai/changelog#customize-accent-color)
* [**Tool call re-execution (Pro)**](https://docs.piebald.ai/changelog#tool-call-re-execution-pro)
* [**Slash commands**](https://docs.piebald.ai/changelog#slash-commands)
* [**Ctrl+R prompt search (Pro)**](https://docs.piebald.ai/changelog#ctrlr-prompt-search-pro)
* [**Warning for active sessions before closing the app (Pro)**](https://docs.piebald.ai/changelog#warning-for-active-sessions-before-closing-the-app-pro)
### [v0.1.20](/changelog#v0-1-20)
* [Image support](https://docs.piebald.ai/changelog#image-support)
* [Setting to customize the monospace font](https://docs.piebald.ai/changelog#setting-to-customize-the-monospace-font)
* [Customizing the model and profile before approving subagents](https://docs.piebald.ai/changelog#customizing-the-model-and-profile-before-approving-subagents)
* [Raw markdown mode](https://docs.piebald.ai/changelog#raw-markdown-mode)
* [Edit OAuth providers' tokens](https://docs.piebald.ai/changelog#edit-oauth-providers-tokens)
### [v0.1.19](/changelog#v0-1-19)
* [**Message reactions**](https://docs.piebald.ai/changelog#message-reactions)
* [**Details for OAuth providers**](https://docs.piebald.ai/changelog#details-for-oauth-providers)
* [**Copying text selections as markdown**](https://docs.piebald.ai/changelog#copying-text-selections-as-markdown)
* [**Onboarding tours**](https://docs.piebald.ai/changelog#onboarding-tours)
* [**GitHub Copilot support**](https://docs.piebald.ai/changelog#github-copilot-support)
### [v0.1.18](/changelog#v0-1-18)
* [**Subagents**](https://docs.piebald.ai/changelog#subagents)
* [**Sidebar enhancements: hiding old chats, compact mode, smooth animations**](https://docs.piebald.ai/changelog#sidebar-enhancements-hiding-old-chats-compact-mode-smooth-animations)
* [**App-wide font customization**](https://docs.piebald.ai/changelog#app-wide-font-customization)
* [**OpenAI Responses configuration**](https://docs.piebald.ai/changelog#openai-responses-configuration)
* [**Report feedback**](https://docs.piebald.ai/changelog#report-feedback)
### [v0.1.17](/changelog#v0-1-17)
* [**Live, interactive terminal commands**](https://docs.piebald.ai/changelog#live-interactive-terminal-commands)
* [**Streamed tool calls**](https://docs.piebald.ai/changelog#streamed-tool-calls)
* [**Assistant message quoting**](https://docs.piebald.ai/changelog#assistant-message-quoting)
### [v0.1.16](/changelog#v0-1-16)
* [**Redesigned message action buttons**](https://docs.piebald.ai/changelog#redesigned-message-action-buttons)
* [**Claude Opus 4.6**](https://docs.piebald.ai/changelog#claude-opus-4-6)
* [**New Claude/ChatGPT subscription models will be available instantly from now on**](https://docs.piebald.ai/changelog#new-claude-chatgpt-subscription-models-will-be-available-instantly-from-now-on)
### [v0.1.14](/changelog#v0-1-14)
* [**Google Antigravity subscriptions (Experimental)**](https://docs.piebald.ai/changelog#google-antigravity-subscriptions-experimental)
* [**Custom Open Folder dialog**](https://docs.piebald.ai/changelog#custom-open-folder-dialog)
### [v0.1.13](/changelog#v0-1-13)
* [**Chat branching**](https://docs.piebald.ai/changelog#chat-branching)
### [v0.1.12](/changelog#v0-1-12)
* [**Direct sign-in to AI provider subscriptions**](https://docs.piebald.ai/changelog#direct-sign-in-to-ai-provider-subscriptions)
* [**Windows ZIP Portable**](https://docs.piebald.ai/changelog#portable-distribution)
### [v0.1.11](/changelog#v0-1-11)
* [**Desktop notifications**](https://docs.piebald.ai/changelog#desktop-notifications)
* [**Amazon Bedrock**](https://docs.piebald.ai/changelog#amazon-bedrock)
### [v0.1.10](/changelog#v0-1-10)
* [**Pausing the agentic loop (Pro)**](https://docs.piebald.ai/changelog#pausing-the-agentic-loop-pro)
* [**Icons next to clickable file references (Pro)**](https://docs.piebald.ai/changelog#icons-next-to-clickable-file-references-pro)
* [**Using Diffs instead of Monaco editor (Pro)**](https://docs.piebald.ai/changelog#using-diffs-instead-of-monaco-editor-pro)
* [**AGENTS.md**](https://docs.piebald.ai/changelog#agents-md)
* [**`AskUserQuestion` built-in tool**](https://docs.piebald.ai/changelog#askuserquestion-built-in-tool)
### [v0.1.9](/changelog#v0-1-9)
* [**Customizing the shell used for terminal commands**](https://docs.piebald.ai/changelog#customizing-the-shell-used-for-terminal-commands)
* [**Pro trial**](https://docs.piebald.ai/changelog#pro-trial)
* [**Filtering chats by tags (Pro)**](https://docs.piebald.ai/changelog#filtering-chats-by-tags-pro)
* [**Support for GitHub-flavored alert/callout blocks (Pro)**](https://docs.piebald.ai/changelog#support-for-github-flavored-alert/callout-blocks-pro)
* [**Clickable file path references show contents on hover (Pro)**](https://docs.piebald.ai/changelog#clickable-file-path-references-show-contents-on-hover-pro)
### [v0.1.8](/changelog#v0-1-8)
* [**Highlighting files referenced by the AI (Pro)**](https://docs.piebald.ai/changelog#highlighting-files-referenced-by-the-ai-pro)
* [**"Active chats" view**](https://docs.piebald.ai/changelog#”active-chats”-view)
### [v0.1.7](/changelog#v0-1-7)
* [**Chat relocation (Pro)**](https://docs.piebald.ai/changelog#relocating-chats-pro)
* [**Chat duplication (Pro)**](https://docs.piebald.ai/changelog#duplicating-chats-pro)
### [v0.1.6](/changelog#v0-1-6)
* [**Web fetching**](https://docs.piebald.ai/changelog#web_fetch-builtin-tool)
* [**Chat continuation (Pro)**](https://docs.piebald.ai/changelog#continuation-pro)
* [**Automatic & manual chat tagging (Pro)**](https://docs.piebald.ai/changelog#automatic-chat-tagging-pro)
### [v0.1.5](/changelog#v0-1-5)
* [**Web searching**](https://docs.piebald.ai/changelog#web-search)
* [**Retention for HTTP traffic logs (Pro)**](https://docs.piebald.ai/changelog#http-traffic-retention-pro)
* [**"Draft prompt partially written" chat status (Pro)**](https://docs.piebald.ai/changelog#”draft-prompt-partially-written”-pro)
* [**Log file**](https://docs.piebald.ai/changelog#log-file)
### [v0.1.4](/changelog#v0-1-4)
* [**@-mentioning files**](https://docs.piebald.ai/changelog#file-@-mentioning)
* [**Rich-text editor**](https://docs.piebald.ai/changelog#rich-text-editor)
* [**Agent skills**](https://docs.piebald.ai/changelog#agent-skills)
### [v0.1.3](/changelog#v0-1-3)
* [**Chat statuses displayed in the sidebar**](https://docs.piebald.ai/changelog#v0-1-3:~:text=Now%20you%E2%80%99ll%20see%20whether%20any%20chats%20are%20working%2C%20have%20finished%20working%2C%20or%20are%20waiting%20for%20tool%20call%20approval%3A)
* [**MCP server/tools enablement**](https://docs.piebald.ai/changelog#v0-1-3:~:text=And%20you%20can%20enable%20and%20disable%20specific%20MCP%20servers%20and%20individual%20tools.%20Here%E2%80%99s%20an%20example%2C%20where%20we%20have%20only%20propose_plan_to_user%20and%20run_terminal_command%20enabled%2C%20and%20those%20are%20the%20only%20ones%20the%20model%20gets%3A)
* [**Custom compaction instructions**](https://docs.piebald.ai/changelog#v0-1-3:~:text=We%20also%20added%20the%20ability%20to%20specify%20custom%20instructions%20when%20manually%20compaction%20a%20chat%2C)
### [v0.1.2](/changelog#v0-1-2)
* [**Token speed counter**](https://docs.piebald.ai/changelog#v0-1-2)
### [v0.1.1](/changelog#v0-1-1)
* [**Plan mode**](https://docs.piebald.ai/changelog#v0-1-2:~:text=Plan%20mode%3A%20You%20can%20now%20switch%20any%20chat%20at%20any%20time%20into%20plan%20mode%20via%20shift%2Btab%2C%20exactly%20like%20Claude%20Code.%20The%20builtin%20tool%20is%20called%20ProposePlanToUser%2C%20which%20we%20think%20is%20a%20more%20intuitive%20name%20than%20CC%E2%80%99s%20ExitPlanMode%20tool.)
* [**Conversation compacting**](https://docs.piebald.ai/changelog#v0-1-2:~:text=Context%20compaction%3A,Compaction%E2%80%9D%20system%20profile.)
### [v0.1.0](/changelog#v0-1-0)
[**Initial release of Piebald.**](https://piebald.ai/blog/piebald-is-here)
# Telemetry
Source: https://docs.piebald.ai/telemetry
We collect telemetry to help us understand how people use Piebald.
## What we collect
We collect system information such as Piebald version and OS name, version, and architecture, and usage information such as when you use features and UI elements. We also collect custom provider endpoints and model IDs you use, so that we can add first-class support for them, add missing models, and fix provider-specific bugs.
We also collect error reports automatically, which helps us fix bugs before users report them.
**We don't provide inference services and don't collect, store, or train on your code or message data under any circumstances.**
## How to disable telemetry
Telemtry and error reporting can be disabled separately via the **Enable Telemetry** and **Enable Error Reporting** checkboxes in **Settings → General**. You can also use set `PIEBALD_DISABLE_TELEMETRY=1` and `PIEBALD_DISABLE_ERROR_REPORTING=1`.
# Web mode
Source: https://docs.piebald.ai/web-mode
Piebald can be run from your desktop or your browser.
Available in Piebald Basic (Free)
Piebald can run as web app instead of a desktop app, if you prefer. This enables you to run it on a headless device (e.g. a remote server) while still being able to access the UI on a desktop machine. In some cases the webapp can perform better than the desktop app.
To start the webapp, download the binaries and execute `piebald-web` or `piebald-web.exe`. You can either double-click the executable file or execute it from the command line:
```sh theme={null}
# Unix
$ ./piebald-web
# Windows
C:\> ./piebald-web.exe
```
Then open the displayed URL in the browser.
### Security
In order to prevent external access to your Piebald database via the webapp, there's an ownership system in place that only allows one Piebald account to access the webapp. Other Piebald accounts can't access the webapp unless you explicitly sign out and reset ownership.
### Server configuration
The webapp's default port is 7000, which you can configure via the `PIEBALD_WEB_PORT` environment variable.
It binds to `127.0.0.1` by default, which prohibits access to the webapp from outside the device you're running it on. If you need to access it remotely, bind to `0.0.0.0` using the `PIEBALD_WEB_ADDRESS` environment variable.
You can also configure the webapp to use HTTPS (e.g. a self-signed certificate) via the `PIEBALD_WEB_TLS_CERTS` and `PIEBALD_WEB_TLS_KEY` environment variables.
macOS and Linux:
```sh theme={null}
export PIEBALD_WEB_PORT=80
export PIEBALD_WEB_ADDRESS=0.0.0.0
export PIEBALD_WEB_TLS_CERTS=cert.pem
export PIEBALD_WEB_TLS_KEY=key.pem
./piebald-web
```
Windows via PowerShell:
```powershell theme={null}
$env:PIEBALD_WEB_PORT=80
$env:PIEBALD_WEB_ADDRESS='0.0.0.0'
$env:PIEBALD_WEB_TLS_CERTS='cert.pem'
$env:PIEBALD_WEB_TLS_KEY='key.pem'
.\piebald-web.exe
```
Windows via Command Prompt:
```powershell theme={null}
set PIEBALD_WEB_PORT=80
set PIEBALD_WEB_ADDRESS=0.0.0.0
set PIEBALD_WEB_TLS_CERTS=cert.pem
set PIEBALD_WEB_TLS_KEY=key.pem
.\piebald-web.exe
```