Changelog
Release notes and version history for Letta Code
All notable changes to Letta Code are documented here.
Unreleased
Section titled “Unreleased”- Added a local statusline extension runtime and routed
/statuslinethrough guided setup for~/.letta/extensions/statusline.tsx(#2482, #2500, #2501, #2502, #2504, #2506) - Added a first-party WhatsApp channel for
letta serverwith linked-device setup, self-chat defaults, group controls, media handling, andMessageChannelsend/react/file support (#2102) - Added the Tutor personality and bundled
letta-helpskill for guided onboarding through memory, delegation, tools, skills, search, subagents, and schedules (#2479) - Fixed local-provider edge cases around LM Studio env-key persistence and empty provider text blocks, and cleaned up local transcript timestamps (#2492, #2485)
- Polished startup/resume behavior across local and cloud agents, including real default-conversation timestamps, explicit backend fallback, Telegram reply reminders, and backend-toggle colors (#2484, #2483, #2480, #2481, #2491)
0.26.1
Section titled “0.26.1”- Improved local-first startup polish: skipped cloud recents while logged out, preserved no-model placeholders, added rotating empty-composer hints, and added a login action to the Constellation empty state (#2466, #2465, #2470, #2469, #2472)
- Fixed Constellation login/connect flows by keeping OAuth polling alive across rerenders and allowing Esc to cancel OAuth overlays (#2471, #2474)
- Fixed startup routing for explicit agent targets and removed a pinned-tab fallback that could show the wrong recent agents (#2477, #2476)
0.26.0
Section titled “0.26.0”- Added the local-first setup flow, first-turn bootstrap, local/Constellation agent tabs, backend toggle in the new-agent flow, and clearer startup hints for fresh local sessions (#2339, #2403, #2419, #2452, #2436, #2438, #2441, #2442, #2450)
- Removed plan mode, renamed the max-context command to
/context-limit, and replaced memory-scope permission controls with the parent-process memory guard opt-out (#2413, #2409, #2423) - Added channel slash commands, fixed Discord open-channel routing, hid stuck approval conflicts, and relaxed reflection error details outside debug mode (#2405, #2386, #2379, #2412)
- Added conversation cwd-map protocol support, sent run IDs with feedback, added Gemini 3.5 Flash, and made Bun the lockfile source of truth (#2433, #2420, #2356, #2448)
- Improved backend-aware session resume, local memory commits, OAuth token refresh, credit-limit messages, and remote environment registration retries (#2434, #2340, #2351, #2391, #2372)
0.25.11
Section titled “0.25.11”- Added schema-driven custom channels, consolidated Discord per-channel policy work, and clarified channel opt-out envelopes and lifecycle error text (#2210, #2329, #2332, #2313)
- Added the first-class worktree creation tool, model-selector recents, terminal window title configuration, Ctrl+O shell output expansion, and Ctrl+D queue defer mode (#1942, #2291, #2333, #2305, #2338)
- Added the New tab to the agent browser and migrated several selectors to the shared overlay picker system (#2337, #2343, #2341, #2346, #2349, #2375, #2377)
- Tightened repository structure with named exports, layer-boundary checks, colocated tests, kebab-case TypeScript filenames, absolute imports, no circular dependencies, and export-function declarations (#2354, #2359, #2361, #2374, #2355, #2362, #2363, #2364, #2370)
- Fixed local transcript migrations, local subagent model inheritance, retryable run metadata, quota messages, memory git auth redaction, and transient provider retries (#2302, #2310, #2315, #2303, #2348, #2320)
0.25.10
Section titled “0.25.10”- Fixed local transcript manifest repair, routed MemFS UI through local-backend paths, refreshed secrets before local secret commands, and added OpenCode-style provider timeouts (#2295, #2282, #2292, #2251)
- Improved provider stream disconnect messaging, nullable turn payload handling, reasoning whitespace, and Telegram block quote rendering (#2276, #2293, #2278, #2296)
- Simplified queue editing so Up-arrow loads all queued content (#2288)
0.25.9
Section titled “0.25.9”- Added memory-focused subagent tool scoping, onboarding memory for Linus and Kawaii agents, the Blank personality, and guidance for agent config context in skills (#2248, #2247, #2181, #2254)
- Added a permissions startup note, backfilled skipped startup notes, moved reflection transcript paths to environment variables, and made large subagent prompt transport more robust (#2249, #2250, #2253, #2265)
- Added
/reload, channel/help, remote compact command support, local max-context carry-over, and the shadow TUI cron experiment (#2274, #2266, #2238, #2257, #2262) - Fixed forwarded Slack message retention, long highlighted user-message wrapping, and current Bun text-loader syntax (#2263, #2268, #2261)
0.25.8
Section titled “0.25.8”- Renamed permission modes for clarity and made unrestricted the default (#2197)
- Added
/goalfor long-running autonomous objectives and refined channel pairing, interactive question prompts, Discord default permission modes, andMessageChannelreply contract reminders (#2177, #2195, #2193, #2194, #2231) - Improved CLI rendering for status lines, prompt bullets, tool-call headers, file/search summaries, Read display, and shell/list/search labels (#2199, #2209, #2219, #2225, #2222, #2240)
- Fixed local interrupted-tool recovery and backfill projection, Slack list-marker formatting, and deferred tool-call commit handling (#2211, #2230, #2229, #2206, #2236)
0.25.7
Section titled “0.25.7”- Restricted file tools available to memory subagents to keep them scoped to memory operations (#2189)
- Guarded tool-call terminal states in the TUI and aligned local-backend compaction formatting with the API (#2188, #2190)
0.25.6
Section titled “0.25.6”- Refactored the CLI App layout and added wiring tests that auto-discover interactive app source files (#2166, #2175)
- Added markdown code block syntax highlighting and rendered retry events as status lines in the TUI (#2186, #2187)
- Added update aliases to the CLI and shared the terminal theme cache in the bundled CLI (#2174, #2176)
- Fixed local-backend compaction on overflow/usage triggers, transient provider stream retries, and tool backfill preservation on local resume (#2178, #2179, #2183)
- Notified chats when channel turns fail (#2101)
0.25.5
Section titled “0.25.5”- Added slash invocation for skills and showed all skill source tabs in the
/skillsdialog (#2157, #2159) - Improved Telegram channel response routing and deduped Discord ingress by message id (#2151, #2081)
- Routed local-backend commands, message search, and image paste paths through the backend abstraction; added websocket-listener support for the local backend (#2158, #2160, #2161, #2171)
- Added local sliding-window compaction, no-MemFS local sessions, and image-history modality guards (#2169, #2170, #2164)
- Propagated backend mode to subagents and removed the
blocksCLI subcommand (#2167, #2163) - Fixed bash preview prompt spacing, user-highlight vertical padding, and listener pong lifecycle parsing (#2168, #2162, #2099)
0.25.4
Section titled “0.25.4”- Added the
ci-failure-detectoragent skill (#2150) - Fixed local-backend ChatGPT OAuth requests and normalized
llm_errorstream stop reasons (#2149, #2124)
0.25.3
Section titled “0.25.3”- Added a
--localCLI flag and enabled provider connections for the new local backend (#2126, #2147) - Wrapped
/btwin approval recovery and retried transient OpenRouter errors (#2133, #2108) - Enabled the automated PR reviewer for all authors (#2145)
0.25.2
Section titled “0.25.2”- Added client-side conversation titles with opt-in AI title generation (#2122)
- Added Amelia as an automated PR code reviewer with refined prompts and stock-phrase outcomes (#2127, #2135, #2139)
- Auto-enabled MemFS for existing agents in headless mode and repaired malformed memory remotes (#2128, #2138)
- Showed Cloudflare transient errors instead of a generic LLM API error and gated post-stop approval recovery (#2136, #2103)
- Synced the Codex system prompt to GPT-5.5 (#2141)
0.25.1
Section titled “0.25.1”- Added local MemFS support and local compaction (#2076, #2106)
- Added websocket commands for deleting memory files and split-channel repair on current main (#2098, #2096)
- Improved permission denial messages for memory-mode and expanded the memory git allowlist (#2107, #2093, #2089)
- Fixed reflection subagent MemFS cwd, validation of missing tool args before permissions, and
/btwon default conversation (#2083, #2090, #2121) - Unblocked memory-mode subagents on commit flows (#2092)
0.25.0
Section titled “0.25.0”- Aligned the Letta system prompt with the Context Constitution (#2040)
- Added the
set-max-contextCLI command (#2082) - Introduced the local-backend foundation: API backend seam, local backend implementation, and local MemFS system-prompt compilation (#2064, #2065, #2066)
- Hydrated local MemFS state from agent tags (#2084)
- Fixed streamed reasoning blocks to split on new OTID and avoided NBSP cursor placeholders in the TUI (#2044, #2013)
- Preserved Telegram photo MIME types on inbound messages (#2050)
- Improved listener performance via cached secrets hydration, cached client skills payload, preserved bootstrap reminders on reconnect, metadata reuse during tool prep, dedup image normalization, idle input fast-path, and post-sync state warming (#2055, #2056, #2057, #2058, #2059, #2060, #2061)
0.24.13
Section titled “0.24.13”- Added dynamic channel plugin support (#2021)
- Added a websocket command for writing and syncing a memory file (#2030)
- Added secrets support in Letta Code Desktop and a
LETTA_DISABLE_CRON_SCHEDULERopt-out (#2046, #2047) - Skipped
.letta/worktreesin @-mention and quick-pick file searches (#2049) - Trimmed reflection launch context and clarified its system prompt (#2031)
- Added an API backend facade and routed headless lifecycle, stream-JSON controls, and headless tests through it (#2034, #2035, #2036, #2037)
- Fixed Kimi K2.6 output token handling (#2042)
- Fixed desktop listener registration with the local environment server when channels are enabled (#2052)
0.24.12
Section titled “0.24.12”- Hardened Discord delivery error replies (#2022)
- Added a websocket override for
unsupported_1(#2024)
0.24.11
Section titled “0.24.11”- Added request-scoped client tool allowlists for listener mode (#2016)
- Moved WebSocket account configuration into channel plugin payloads (#2015)
- Centralized Letta API calls behind a single helper (#2017)
- Forwarded Discord delivery errors back to the originating user (#2018)
- Refreshed OTIDs for post-stop listener retries and honored reflection subagent model overrides (#2020, #2014)
0.24.10
Section titled “0.24.10”- Added a runtime last-environment header for listener requests (#2003)
- Cached
messages.retrieveto reduce redundant API calls (#2006) - Injected shell secrets via environment variables and hydrated secrets for websocket shell tools (#2007, #2002)
- Stripped ANSI sequences from streaming shell tool output (#2009)
- Hardened WezTerm config injection to avoid corrupting commented configs (#1941, #2012)
- Skipped MemFS checkout when the remote has no HEAD (#2005)
0.24.9
Section titled “0.24.9”- Added a Discord guild channel allowlist and fixed Discord direct-message routing (#1950, #1944)
- Supported local channel listeners on self-hosted servers (#1993)
- Removed GPT-5.5 Pro (#2000)
0.24.8
Section titled “0.24.8”- Re-rooted the file index when the current working directory is a git worktree (#1980)
- Added runtime experiment toggles for Node (#1986)
- Improved startup performance by deduping subagent and headless
agents.retrievecalls, caching agent state in the headless loop, skippingsyncAgentStateon tool-result continuations in bypass mode, and guarding init effects against double-fires (#1988, #1981, #1983, #1987, #1989, #1990)
0.24.7
Section titled “0.24.7”- Added the
configuring-your-harnessbuilt-in skill for deterministic harness configuration (#1978) - Added websocket hot-reload of permission settings (#1970)
- Capped reflection (dream) startup context (#1977)
- Fixed headless terminal stream-JSON flushing (#1975)
0.24.6
Section titled “0.24.6”- Routed desktop MemFS git transport transiently and refreshed memory git origin before write guards (#1969, #1967)
- Fixed authentication for the headless runner (#1972)
0.24.5
Section titled “0.24.5”- Added the DeepSeek V4 Pro model (#1961)
- Used the CLI token estimator in prompts (#1960)
- Validated the MemFS sync endpoint on desktop enable and routed websocket git sync through the desktop proxy (#1962, #1964)
- Aliased Letta environment variables for PowerShell (#1963)
0.24.4
Section titled “0.24.4”- Made sync approval recovery explicit in listener mode (#1956)
0.24.3
Section titled “0.24.3”- Renamed the
letta memfsCLI subcommand toletta memory(#1955) - Added
letta memory tokensfor inspecting memory token usage (#1939) - Added websocket emit telemetry, protocol telemetry to file, and local activity telemetry to file (#1945, #1952, #1953)
- Throttled streaming tool output and surfaced approval-continuation retries in the listener (#1946, #1954)
0.24.2
Section titled “0.24.2”- Added GPT-5.5 (#1947)
- Added Kimi K2 BYOK (#1938)
- Flushed the final headless stdout chunk before exit (#1943)
0.24.1
Section titled “0.24.1”- Added
should_doctordevice-status logic for/doctortriggers (#1599) - Surfaced the Task tool as
Agentfor Claude Code parity (#1911) - Supported a separate MemFS base URL via
LETTA_MEMFS_BASE_URLand stopped blocking interactive startup on sync (#1918, #1916) - Made
context_doctorconservative about system-prompt edits (#1921) - Routed Gemini models through the default toolset and hid legacy models without dropping their metadata (#1924, #1923)
- Hardened HEIC handling and image-resize behavior across shared image tools (#1920, #1922)
- Prevented MessageChannel from leaking into unrouted conversations and confined cwd switches to the conversation that created the worktree (#1915, #1925)
0.24.0
Section titled “0.24.0”- Added the
modifying-letta-codebuilt-in skill (#1887) - Added
/memory-repositoryfor pushing agent memory to an additional git remote (#1899) - Always used
letta/auto-memoryfor reflection subagents and reused shell analysis for repeated Bash approval rules (#1888, #1892) - Removed the built-in
exploresubagent (#1896) - Added GPT-5.5 ChatGPT BYOK models and auto-approval for safe
git grepcommands (#1901, #1900) - Added optional inbound debounce for Slack messages and supported proactive Slack
MessageChanneltargets (#1891, #1889, #1898) - Posted Slack lifecycle errors in-thread (#1893)
- Removed the periodic memory-sync reminder injection (#1910)
- Cleared stale
originpush URLs during memory remote repair and stored reflection payload snapshots under the transcript root (#1908, #1912) - Normalized outgoing base64 image media types (#1909)
0.23.11
Section titled “0.23.11”- Stamped ISO 8601 timestamps on all stream-JSON wire events (#1867)
- Made forked subagents stop continuing parent tasks and propagated parent scope with clearer memory-mode shell constraints (#1875, #1870)
- Scoped the reflection gate by parent agent and conversation and unified auto-denial message formatting (#1882, #1871)
- Allowed git branch filter flags in plan mode’s read-only check (#1879)
- Denied stale restored client approvals and loosened the
system_alertguard so compaction summaries don’t leak as user messages (#1876, #1885) - Used
.jsonextensions for reflection payload files, recorded real agent and message IDs in reflection telemetry, and clarified secret reminder text and redaction placeholders (#1880, #1874, #1884) - Isolated runtime scope for tool execution, hardened image-resize verification, and improved the clipboard screenshot fallback (#1873, #1872, #1877)
0.23.10
Section titled “0.23.10”- Added the Discord channel plugin (#1825)
- Added Telegram memo transcription via Whisper (#1806)
- Added
grep_in_filescontent-search command and global memory history with commit-diff retrieval over WebSocket (#1857, #1864, #1866) - Added the
update_toolsetWebSocket command for the desktop UI (#1794) - Renamed reflection to “dream” in the TUI (#1856)
- Respected
--no-system-info-reminderfor agent-info reminders (#1858) - Preserved Slack threaded replies across message subtypes (#1863)
- Warned when
/logoutleaves an env API key in place (#1819)
0.23.9
Section titled “0.23.9”- Added Kimi K2.6 (#1851)
- Added cross-agent memory guard for permissions and an opt-in
x-letta-nodeheader via theLETTA_NODEenvironment variable (#1852, #1835) - Created hidden conversations for agent-to-agent and forked-subagent paths (#1838)
- Replayed memory writes on remote MemFS conflicts (#1853)
- Scoped the worktree watcher correctly and prevented
@autocomplete from cancelling backspace searches (#1842, #1850)
0.23.8
Section titled “0.23.8”- Recovered pending channel approvals after a listener reconnect (#1833)
- Supported the
AUTO_MEMORYmodel override for reflection subagents (#1836)
0.23.7
Section titled “0.23.7”- Handled interactive approvals in channel-routed chats (#1831)
- Handled PID recycling in the container scheduler lease (#1808)
0.23.6
Section titled “0.23.6”- Added the
letta channels bindCLI command (#1802) - Added a Slack default permission mode and bootstrapped mention-created thread context (#1812, #1811)
- Streamed bash output over
stream_delta(#1799) - Removed the 3-day auto-expiry for recurring cron tasks (#1828)
- Added
--no-bin-linksfor Windows channel runtime installs (#1824) - Clarified Opus 4.7 reasoning tiers and moved the
opushandle to Opus 4.7 (#1816, #1818) - Added hybrid file-index directory listing (#1817)
0.23.5
Section titled “0.23.5”- Added Opus 4.7 (#1814)
- Added channel turn lifecycle hooks (#1807)
- Separated MemFS state from local checkout (#1800)
- Hydrated prior Slack thread context on first mention and disabled outbound web-client retries (#1803, #1804)
- Launched dev subagents with text loaders for prompt files and synced conversation refs for bootstrap reminders (#1796, #1805)
0.23.4
Section titled “0.23.4”- Scoped
MessageChannelto bound conversations (#1793)
0.23.3
Section titled “0.23.3”- Made the
recallsubagent fork the parent conversation (#1787) - Unified
MessageChanneldiscovery, deduped Slack threaded mention ingress, and returned account snapshots before live refresh (#1788, #1789, #1790) - Preserved queued user OTIDs across listener dequeue and send (#1791)
0.23.2
Section titled “0.23.2”- Initiated file indexing on app load (#1785)
- Resolved the Slack Bolt App constructor from the bundled runtime (#1784)
0.23.1
Section titled “0.23.1”- Added a current-working-directory watcher for auto-detection (#1778)
- Applied real-time sync for the filesystem (#1755)
- Restored enabled channel adapters on startup (#1782)
0.23.0
Section titled “0.23.0”- Added the Slack channel adapter with account-scoped channel management and Telegram media + reaction parity (#1763, #1774, #1780)
- Installed the Telegram runtime on demand (#1768)
- Generalized core channel seams and improved shell command UI remapping (#1762, #1758)
- Allowed read-only shell inspection scripts in permissions and preserved shell command semantic labels across chained Bash commands (#1766, #1767)
- Extracted a shared shell analysis layer for the permission system (#1769)
- Filtered reflection payloads and switched them to JSON format (#1779)
- Scoped
Skilllookup to the executing listener turn (#1770)
0.22.4
Section titled “0.22.4”- Fixed repeated Linux keychain read warnings during auth setup (#1663)
- Fixed CLI subcommands so they dispatch before the TUI initializes, and fixed
letta listenstartup ordering so settings load before telemetry (#1725, #1752) - Added outbound Telegram markdown formatting and hardened Telegram reminder delivery in channels mode (#1754, #1756, #1757)
0.22.3
Section titled “0.22.3”- Added OAuth device flow for headless server deployments (#1731)
- Fixed memory git commits to unstage paths after commit-hook failures (#1734)
- Fixed bundled CLI packaging to externalize grammY correctly (#1749)
0.22.2
Section titled “0.22.2”- Fixed the pre-commit frontmatter validator to ignore YAML continuation lines (#1743)
- Improved inbound channel reply prompting and OAuth setup network error messages (#1746, #1747)
0.22.1
Section titled “0.22.1”- Added live websocket channel management for channels mode (#1744)
0.22.0
Section titled “0.22.0”- Added the channels system with a Telegram MVP in listener/WebSocket mode (#1737)
- Stopped sending self-hosted errors to telemetry (#1730)
- Fixed
ExitPlanModeto restore the correct default permission mode and aligned listener task notification queue semantics (#1738, #1739)
0.21.18
Section titled “0.21.18”- Added the
scheduling-tasksbuilt-in skill for cron-style reminders and automations (#1714) - Added the
/btwcommand for forked conversation side-queries and device-side file watching withwatch_file/unwatch_file(#1596, #1718) - Added web history search filters and content-search mode in the history tab (#1681, #1683)
- Added Opus 1M LC support and improved 1M context window handling (#1701, #1720)
- Fixed memory sync, permissions, and tool behavior across runtimes, including Windows git credential helpers, memory tool schema alignment,
apply_patchsemantics, and shell truncation behavior (#1700, #1702, #1704, #1709, #1710, #1711, #1721)
0.21.17
Section titled “0.21.17”- Added per-personality default models and set the
kawaiipersonality to preferauto-chat(#1687) - Added the
glm-5.1model preset (#1694) - Enforced git worktree creation under
.letta/worktrees/(#1693) - Fixed first-connection bootstrap of base tools, desktop file indexer visibility, and memory-tool auto-approval behavior in
acceptEditsmode (#1684, #1689, #1690) - Improved memfs push reliability, model-setting context-window updates, and websocket listener hot-path performance (#1688, #1660, #1695)
0.21.16
Section titled “0.21.16”- Added
memory_historyandmemory_file_at_refdevice commands for memory inspection (#1637) - Fixed memfs clone/pull to retry on transient 52x git errors (#1675)
- Disabled auto-init for newly created agents (#1679)
0.21.15
Section titled “0.21.15”- Improved insufficient-credits error copy for CLI flows (#1672)
- Retried formatted Cloudflare
521errors during recovery (#1674)
0.21.14
Section titled “0.21.14”- Stopped sync recovery failures from spamming the transcript in listener mode (#1669)
- Fixed websocket stream retries to relay abort signals correctly (#1668)
0.21.13
Section titled “0.21.13”- Fixed memfs skill lookup in the
Skilltool (#1649) - Fixed memory-directory git commits to use the agent git identity (#1640)
- Refreshed listener loop status when the active plan file path changes (#1666)
0.21.12
Section titled “0.21.12”- Added plan file path tracking in listener loop state (#1662)
- Scoped memory subagents to memory roots for safer permissions (#1656)
- Updated the
working-in-parallelskill with pre-commit hook guidance (#1655)
0.21.11
Section titled “0.21.11”- Preserved websocket loop error details in listener mode (#1650)
- Fixed hidden approvals to unwind correctly after interrupts (#1657)
0.21.10
Section titled “0.21.10”- Fixed listener approval request projection to be atomic (#1644)
- Fixed listener transcripts to suppress stale approval recovery notices and show full
update_subagentsstatus updates (#1641, #1643) - Added
[[path]]indexing guidance to the system prompt and memory tool docs (#1642)
0.21.9
Section titled “0.21.9”- Added websocket approval suggestion support in listener mode (#1629)
0.21.8
Section titled “0.21.8”- Improved file indexing correctness, Merkle propagation, and freshness (#1615)
- Fixed
/forkfor default conversations to passagent_id, and kept auto models on the default toolset (#1617, #1618) - Fixed self-hosted model fallback for new agents and improved secret prompting (#1619, #1623)
- Fixed approval recovery so restored approvals continue through the live pipeline without max-turn exits (#1622, #1625)
- Fixed websocket listener retention leaks, agent info reminder metadata, and miscellaneous permissions issues (#1624, #1627, #1628)
0.21.7
Section titled “0.21.7”- Added the
/empanadaslash command for Empanada Empire ordering (#1612)
0.21.6
Section titled “0.21.6”- Changed
/initto use the new context constitution workflow for deeper memory initialization (#1608) - Changed
history-analyzerto use the same context constitution principles during history migration (#1610) - Added
add-agentsupport to server-mode websocket clients (#1606) - Fixed duplicate OpenAI GPT-5.4 presets in model selection (#1607)
- Fixed
AskUserQuestionandExitPlanModeapprovals to preserve the user’s draft input (#1570)
0.21.5
Section titled “0.21.5”- Added
/personalityto swap between curated agent personality presets (#1439) - Added
letta agents createwith--personality,--description,--tags, and--pinnedoptions (#1571) - Changed session history storage to use
~/.letta/instead of~/.letta-code/(#1588) - Added remote
/init, richer git branch context, and improved client-side file editing in server mode (#1600, #1556, #1589) - Added Bedrock fallback when Anthropic is unavailable (#1569)
- Fixed headless 409 recovery, no-op commit message creation, queued task notifications, and per-conversation subagent state in server mode (#1591, #1598, #1595, #1602)
0.21.4
Section titled “0.21.4”- No notable user-facing changes in this release
0.21.3
Section titled “0.21.3”- Added websocket
list_modelsandupdate_modelsupport for server-mode clients (#1579) - Improved remote reflection progress updates with step counts, and fixed follow-up model update status messages (#1578, #1582)
0.21.2
Section titled “0.21.2”- Added advertised
supported_commandsin device status and remote/doctorcommand support for server-mode clients (#1568, #1572) - Added websocket reflection and sleeptime parity in server mode (#1567)
- Added remote skill enable/disable controls (#1573)
- Improved
/resumeto fetch only the messages it needs when resuming conversations (#1550)
0.21.1
Section titled “0.21.1”- Fixed bundled skills to resolve script paths consistently across installations (#1563)
0.21.0
Section titled “0.21.0”- Added
CONVERSATION_IDto shell tool environments and agent info reminders (#1557) - Improved message search performance by fetching active results before prefetching (#1553)
0.19.11
Section titled “0.19.11”- Added provider status page links on downstream model errors (#1523)
- Added Baseten Kimi model support and client-side file editing support (#1529, #1544)
- Added optional
/forksummaries and aforksubagent type that inherits the full parent conversation context (#1530, #1539) - Added server-mode
/init, memfs sync on first message, and session-context reminders in listener mode (#1534, #1546, #1536) - Fixed large-workspace file indexing OOMs and improved transient 521 recovery in remote mode (#1533, #1552)
0.19.10
Section titled “0.19.10”- Fixed server-mode approval replay after interrupts (#1521)
0.19.9
Section titled “0.19.9”- Added the
/secretslash command for managing shell-command secrets (#1435) - Added
/forkto duplicate the current conversation into a new thread (#1517) - Added automatic fallback to
letta/autowhen quota limits block the current model (#1473) - Fixed conversation restore and persistence when resuming with
--agentor--name, and keptsearch_filesscoped to the current conversation cwd (#1514, #1515, #1512) - Fixed websocket resume, streaming recovery, and background task notifications in server mode (#1500, #1505, #1520)
0.19.8
Section titled “0.19.8”- Added the
/doctorcommand to audit and refine an agent’s memory structure (#1488) - Added client-side
memory_apply_patchsupport for Codex toolsets, complementing the existingmemorytool (#1485) - Added memory tool event updates so connected clients can refresh memory state automatically (#1495)
- Improved
/resumewith progressive loading for large conversation lists (#1462) - Fixed listener permission recovery, queued skill replay, retry deduplication, and related websocket resume issues (#1492, #1499, #1502, #1478)
0.19.7
Section titled “0.19.7”- Changed
/initguidance to remove hard-coded memory file count and size targets (#1483) - Changed memory file frontmatter so
descriptionis required while legacylimitremains optional (#1484) - Added pre-commit validation for memory and skill formatting (#1482)
- Improved reflection snapshots by collapsing very large directories in the memory tree (#1481)
0.19.6
Section titled “0.19.6”- Added MiniMax 2.7 as a supported model preset (#1453)
- Added optional conversation naming to
/new(#1451) - Changed
/searchto default to the current agent scope (#1450) - Changed Letta Code to remove the
--continueflag and rely on default resume,--new,--resume, and--conversationinstead (#1458) - Improved startup resume behavior for project-specific conversations and auto model routing context windows (#1457, #1463)
0.19.5
Section titled “0.19.5”- Changed
/resumeto sort conversations by most recent activity first (#1444) - Fixed
LETTA_DEBUGenvironment variable handling so debug logging is respected when set (#1452)
0.19.4
Section titled “0.19.4”- Added the
memorytool back to the default Claude, Codex, and Gemini toolsets (#1447) - Fixed Electron and Node.js environments to fall back to
node-ptywhen Bun is unavailable (#1446) - Fixed listener approval reentry so queued turns drain correctly after approval recovery (#1448)
0.19.3
Section titled “0.19.3”- Added Kitty keyboard protocol support for more reliable key handling in supported terminals (#1334)
- Added separate BYOK support for zAI Coding Plan accounts via
/connect zai-coding(#1434) - Changed
ExitPlanModeto always require manual approval, even in--yolomode (#1440) - Fixed approval comments being preserved in tool responses for listener and client-tool integrations (#1441, #1442, #1443)
- Fixed permission mode sync issues in desktop listener sessions (#1432, #1437)
0.19.2
Section titled “0.19.2”- Fixed TUI live-preview flicker with post-highlight clipping (#1423)
- Changed default model selection to prefer
autoinstead of Sonnet (#1429) - Fixed V2 listener terminal event wiring and required approval for
ExitPlanModein bypass mode (#1430, #1431)
0.19.1
Section titled “0.19.1”- In Remote environments,
letta servernow keeps permission modes separate per conversation, and restores each conversation’s working directory and permission mode after a server restart - Added GPT-5.4 Mini and GPT-5.4 Nano model presets for OpenAI and ChatGPT Plus/Pro in Models
- Fixed custom subagents loading when
.mdfiles use Windows line endings or a UTF-8 BOM in frontmatter - Fixed duplicate bypass auto-approvals in plan mode when the same tool call is replayed
0.19.0
Section titled “0.19.0”- Added a new
/recompileslash command to recompile the current agent and conversation when you need to refresh prompt state manually - Added a client-side
memorytool with git-backed sync for MemFS workflows, plus startup warnings when context repositories are not enabled - Changed built-in default agents and subagents to prefer auto model routing when available, with safer self-hosted fallbacks
- Improved
/initso shallow initialization adapts to your existing memory structure instead of assuming a fresh layout - Improved server mode listener sessions by scoping runtime state per conversation for more reliable parallel and resumed sessions
- Fixed startup reconciliation for attached base tools and default summarization model settings on existing agents
- Fixed status line refresh behavior and several subagent lifecycle and display issues
0.18.3
Section titled “0.18.3”- Added indexed
@file search with persistent cache support - Added
.letta/.lettaignoresupport andMAX_ENTRIEStuning in~/.letta/.lettasettingsfor file search indexing - Added source-faithful system prompt presets:
source-claude,source-codex, andsource-gemini - Added bundled
dispatching-coding-agentsskill - Added PTY terminal session support in
letta serverlistener mode - Added
recover_pending_approvalssupport in headless--input-format stream-jsoncontrol requests - Added
gpt-5-mini-highmodel preset - Changed
/initto run through the primary agent as an interactive initialization flow - Improved shallow auto-init performance
- Improved reflection subagent context by reading local transcript files
- Improved
letta serverworking-directory and environment cache persistence across restarts - Fixed model preset refresh and update-args fallback handling to preserve context window settings and BYOK compatibility
- Fixed pre-stream
409 CONFLICTbusy handling to resume server-side runs - Fixed newly spawned subagents to default
memfsto off
0.18.2
Section titled “0.18.2”- Fixed a Bun/Linux crash in vendored Ink input handling when
handleDatareceives undefined input
0.18.1
Section titled “0.18.1”- Added syntax highlighting for Bash command previews in approval and tool-call UI
- Improved diff rendering with syntax-highlighted output in the TUI
- Fixed missing backfilled tool calls in streamed history rendering
- Fixed plan file path race during
ExitPlanMode - Fixed
--yoloauto-approval while plan mode is active - Fixed leading-space artifacts on wrapped continuation lines in TUI text
- Fixed token counting display in subagent status panels
0.18.0
Section titled “0.18.0”- Added recipe-based system prompt management
- Added client-side skills loading and skill reminders
- Added per-conversation working directories in server mode listener sessions
- Added minimum Docker server version checks with upgrade guidance
- Added
conversation_idpropagation on WebSocket listener events - Added plan mode system reminders in server mode
- Added command hints for agents using non-default system prompts
- Added ChatGPT Plus/Pro
gpt-5.4-fastmodel tier support - Fixed Gemini 3.1 Pro Preview model handles
- Fixed custom BYOK models not appearing in
/modelselector - Fixed listener queue pump recovery and parity in server mode
- Fixed
ExitPlanModecontinuation across permission mode cycling
0.17.2
Section titled “0.17.2”- Added GPT-5.4, GPT-5.4 Fast, and GPT-5.4 Pro model support
- Added
(Beta)label toletta/autoandletta/auto-fastin model selector - Added blinking spinner for background subagent indicator in footer
- Added
run_request_errorevent inletta remotewhen initial POST fails - Excluded
AskUserQuestionfrom headless mode toolset - Changed
defaultsystem prompt preset to use the Letta system prompt instead ofletta-claude - Changed free-tier default model from MiniMax M2.5 to GLM-5
- Fixed
--systemflag to validate against known preset IDs instead of silently falling back - Fixed conversation model overrides not persisting across turns
- Fixed conversation model override cleared on transient retrieve errors
- Fixed stale
max_tokensvalues lingering after model switch - Fixed
letta remoteinterrupt recovery and reconnect hydration - Fixed
letta remotestale approval conflicts after stop-reason errors - Fixed footer subagent link and alignment
- Removed
--system-appendflag
0.17.0
Section titled “0.17.0”- Renamed
letta remotetoletta server(withremotekept as an alias) - Added
letta/autoandletta/auto-fastmodel support in model selection - Added max (
xhigh) reasoning tiers for Sonnet 4.6 and Opus 4.6 - Added none/low/medium/high reasoning tiers for Opus 4.5
- Added auto-init memory bootstrap on first message for new MemFS agents
- Changed
/initto use shallow and deep initialization tiers - Added subagent type tags when creating new subagents
- Added
agent_id,conversation_id, andlast_run_idto/statuslinepayloads - Added agent-aware
/renamehints in command-IO reminders - Changed app URL generation to use centralized
/chatlinks - Fixed headless
409 CONFLICTbusy retries to use exponential backoff - Fixed startup guard for missing default conversation IDs
- Fixed default-conversation API routing for SDK 1.7.11 (
conversation_id="default"withagent_id) - Improved readability of command-IO and toolset-change reminders
0.16.15
Section titled “0.16.15”- Added unified provider normalization for
/connectandletta connect - Added
chatgptas canonical connect provider token (codexremains an alias) - Added background agent indicator in the footer
- Added
background_agentsin/statuslinepayloads - Added listener version metadata in
letta remoteregistration - Changed default model from Sonnet 4.5 to Sonnet 4.6
- Fixed
Shift+Tabto enter plan mode before auto-approve - Fixed
letta remotere-registration to recover instead of crash - Fixed
/modelselection persistence for default conversations - Improved idle-time flushing of background subagent notifications
- Improved
approve-alwayspattern generation for read-onlyghcommands
0.16.14
Section titled “0.16.14”- Added
/compactioncommand for interactively selecting compaction mode - Added
--debugflag toletta remotefor plain-text console logging - Added always-on session log written to
~/.letta/logs/remote/for everyletta remotesession - Added debug log file written to
~/.letta/logs/debug/for diagnostics - Changed
/initto run as a background subagent (non-blocking initialization) - Changed reflection subagent output to be silenced from the primary agent’s context
- Fixed model selection not persisting when starting new conversations
- Fixed Bash tool git commit and PR instructions for Codex and Gemini toolsets
0.16.13
Section titled “0.16.13”- Added update availability notifications in TUI and footer when a newer version is released
- Added
/compact self_compact_alland/compact self_compact_sliding_windowmodes for agent-driven compaction - Added
/reasoning-tabcommand to toggle Tab key cycling through reasoning effort levels (opt-in, disabled by default) - Added session usage details persistence shown in exit summary
- Removed
plansubagent (plan mode no longer delegates to a dedicated subagent) - Removed
defragmenting-memoryskill (memory subagent is now self-contained) - Fixed
/clearcommand to skip server-side message reset for named conversations - Fixed
/modeland/reasoningcommands to stay scoped to the current conversation - Fixed plan mode permission level being reliably restored after exiting
- Fixed plan mode path handling with quote-aware shell parsing for
apply_patchand scoped paths - Fixed Cloudflare HTML 5xx errors handled gracefully with user-friendly messages
- Fixed ChatGPT
usage_limit_reachederrors to display the reset time - Fixed API key caching to survive keychain failures mid-session
- Fixed clickable ADE and usage links in agent info bar
- Fixed
/modelselector to deduplicate models by handle - Fixed model handle display removing
s:/t:suffixes from status bar - Fixed auto-open file viewers being skipped in SSH sessions
- Fixed memfs git credential helper value being redacted from debug logs
- Improved streaming resilience in
letta remotemode
0.16.12
Section titled “0.16.12”- Renamed
letta listencommand toletta remote(old name still works as an alias) - Added automatic retry on empty LLM responses
- Fixed
--conv defaultworking alongside--new-agentflag - Fixed approval data being preserved across stream resume boundaries
- Fixed TUI reflow glitches in footer and on terminal resize
- Fixed ADE link and streaming elapsed timer stability across terminal resizes
0.16.11
Section titled “0.16.11”- Added GPT-5.3 Codex model tiers support
- Fixed WebSocket connectivity issue
- Fixed cosmetic display issue for newly created agents
0.16.10
Section titled “0.16.10”- Simplified
letta listencommand: removed explicit binding flags and added auto-generated session names - Fixed API key detection to read from environment variables rather than checking repo secrets
- Fixed memory defrag flow for git-backed memfs
0.16.9
Section titled “0.16.9”- Fixed settings collision when running Letta Code from the home directory (project vs. global settings conflict)
- Updated featured models list to show only the latest frontier model per provider
0.16.8
Section titled “0.16.8”- Fixed hooks not logging a full error stack trace when project settings are absent
0.16.7
Section titled “0.16.7”- Added
/install-github-appsetup wizard for GitHub App integration - Added
bootstrap_session_stateheadless API for pre-configuring session state and memfs startup policy - Fixed startup performance by skipping no-op preset refresh when resuming existing agents
- Fixed duplicate frontmatter blocks appearing in memory subagent prompt
- Fixed interactive tools from being auto-approved in listen mode
- Fixed headless
list_messagesto scope correctly to the default conversation - Fixed last-character clipping on deferred-wrap terminals
0.16.6
Section titled “0.16.6”- Fixed user permission settings path to use
~/.lettainstead of~/.config/letta
0.16.5
Section titled “0.16.5”- Fixed default conversation sentinel handling in headless startup
0.16.4
Section titled “0.16.4”- Added headless
list-messagesprotocol command - Fixed reasoning tag display when reasoning is set to none
- Disabled xhigh reasoning tier for Anthropic models
0.16.3
Section titled “0.16.3”- Added
/palacecommand alias for Memory Palace - Added plan viewer with browser preview (opens plan markdown in browser)
- Added symlink support for skills installed in
~/.letta/skills/ - Fixed Node 18 compatibility with
node:cryptoimport - Fixed
bypassPermissionsmode not persisting across transient retries - Fixed transcript backfill on conversation resume
- Fixed assistant anchor recency on resume
- Fixed default conversation for freshly created subagents
- Fixed compaction reflection trigger for legacy summary format
- Fixed model preset settings not refreshing on resume
0.16.2
Section titled “0.16.2”- Improved startup performance by eliminating redundant API calls
- Fixed slash commands blocked after interrupt during tool execution
- Fixed Memory Palace auto-open in tmux on macOS
- Fixed shared reminders disabled for subagents
- Fixed env var resolution in reflection/history-analyzer commit trailers
- Fixed Memory Palace nesting level display
- Fixed Memory Palace handling of
$in memory content - Fixed retry on quota limit errors
0.16.1
Section titled “0.16.1”- Added Memory Palace static HTML viewer (opens memory visualization in browser from
/memfs) - Added auto-enable memfs from server-side tag on new machines
- Fixed error formatting for
/init - Fixed version reporting in feedback and telemetry
- Fixed headless mode defaulting to new conversation to prevent 409 race
- Fixed
/memorycommand label to say “memory” instead of “memory blocks” - Fixed
max_output_tokensfor GPT-5 reasoning variants - Fixed LLM streaming error provider mapping
0.16.0
Section titled “0.16.0”- Added reasoning settings step to
/modelselector for choosing reasoning tier after model selection - Added Tab key cycling of reasoning tiers from the input area
- Added Sonnet 4.6 1M context window model variant
- Added Gemini 3.1 Pro Preview model support
- Added
autooption for toolset mode with persistence across sessions - Added
LETTA_MEMFS_LOCALenv var to enable memfs on self-hosted servers - Added Edit tool start line number in code diff display
- Added elapsed time display for running shell tools
- Added memory application guidance to system prompts
- Aligned TaskOutput display format with Bash output
- Fixed slash commands incorrectly opening state when no arguments are accepted
- Fixed ADE links for default conversation
- Fixed user settings being clobbered on save
- Fixed Gemini/GLM tools not working in plan mode
- Fixed permission mode desyncs in YOLO approval handling
- Fixed reasoning effort display in footer and model selector
- Fixed conversation routing after creating new agent in
/agents - Fixed plan file
apply_patchpaths not allowed in plan mode - Fixed auto toolset detection for ChatGPT OAuth as Codex
- Fixed agents limit exceeded retry behavior
- Fixed default agent creation when base tools are missing
- Disabled hidden SDK retries for streaming POSTs
- Removed Sonnet 4.5 from featured models
0.15.6
Section titled “0.15.6”- Added
sonnetshortcut for Sonnet 4.6 model in-mflag
0.15.5
Section titled “0.15.5”- Added Sonnet 4.6 model support (set as new default model)
- Changed featured model from Sonnet 4.5 to Sonnet 4.6
0.15.4
Section titled “0.15.4”- Added
--skill-sourcesflag to control which skill sources are enabled (comma-separated:bundled,global,agent,project, orall) - Added
--no-bundled-skillsflag to disable only bundled skills while keeping other sources - Added headless reflection settings:
--reflection-trigger,--reflection-behavior,--reflection-step-count - Added
--no-system-info-reminderflag to suppress first-turn environment context reminder
0.15.3
Section titled “0.15.3”- Added
MEMORY_DIRandAGENT_IDenvironment variables exposed in shell tools - Fixed ChatGPT connection and OAuth error retry classification
- Fixed slash command queueing while agent is running
- Fixed memfs/standard prompt section reconciliation
- Fixed auto-update execution and release gating
- Fixed interrupt timer reset on eager cancel
- Fixed skills reminders appearing in headless sessions
- Removed
max_turnsoption from Task tool
0.15.2
Section titled “0.15.2”- Added
/skillscommand to browse available skills by source (bundled, global, agent, project) - Added
memfs_enabledstatus in headless init messages - Fixed agent not being reused on directory switch (no longer creates unnecessary new agents)
- Fixed over-escaped strings in Edit tool
- Fixed memfs git pull authentication and credential URL normalization
- Fixed shell auto-approval path checks
- Fixed Windows absolute file-rule matching in permissions
- Fixed bundled JS subagent launcher on Windows
- Fixed model tier selection when model ID is selected directly
0.15.1
Section titled “0.15.1”- Added
--no-skillsflag to disable bundled skills - Added
--tagsflag for headless mode agent tagging - Added MiniMax M2.5 model support
- Added specific retry messages for known LLM provider errors
- Improved reflection subagent to autonomously complete merge and push operations
- Removed
conversation_searchfrom default toolset - Fixed ghost assistant messages when Anthropic returns
[text, thinking, text]block order - Fixed CONFLICT errors after interrupt during tool execution
- Fixed interrupt recovery to only trigger on real user interrupts
- Fixed memfs init steps in headless mode
- Fixed ADE default conversation link
0.15.0
Section titled “0.15.0”- Added git-backed memory filesystem sync with automatic commit and push
- Added
reflectionsubagent for background memory analysis and updates - Added
history-analyzersubagent andmigrating-from-codex-and-claude-codeskill for importing history from Claude Code and Codex CLIs - Added
/statuslinecommand for configurable CLI footer status lines - Added
/sleeptimecommand for client-side reflection trigger settings - Added
/compact [all|sliding_window]mode options - Added GLM-5 model support
- Renamed
/downloadto/exportand--from-afto--import(old names still work as aliases) - Changed compaction to set summary as first message in conversation
- Fixed
@file browser deep recursive search when browsing parent directories - Fixed
/contextdouble rendering on short terminals - Fixed system-reminder tag rendering in message backfill
- Fixed stream ID accumulator collisions
0.14.16
Section titled “0.14.16”- Added custom tools support for SDK-side tool registration and execution in bidirectional mode
- Added agent registry import support (
@author/nameformat for--from-af) - Added
PreCompacthooks now fire during server-side automatic compaction - Fixed OpenAI encrypted content organization mismatch error handling
- Fixed headless pre-stream approval conflict recovery
- Fixed slash-prefixed messages without trailing space not being sendable
- Fixed model updates not sending
max_tokensconfiguration to cloud - Fixed memfs not detaching all memory tool variants when enabled
- Improved headless mode interactive tool behavior for bidirectional parity
0.14.15
Section titled “0.14.15”- Added brand accent color for markdown link text
- Improved rendering stability and flicker prevention across footer and streaming status
- Improved always-allow behavior for skill script permissions
- Improved error guidance for model availability and credit issues
- Fixed
memorydefrag subagent to run in background - Fixed MiniMax errors at higher token counts
- Fixed duplicate feedback command output on submit
- Fixed oversized shell tool output clipping in collapsed tool results
- Fixed task transcript propagation for max-step failures
- Removed ChatGPT OAuth Pro plan restriction for Codex connect
0.14.14
Section titled “0.14.14”- Fixed
--max-turnsflag not accepted at top-level CLI - Fixed subagent keychain migration churn
0.14.13
Section titled “0.14.13”- Added GPT-5.3 Codex model support (ChatGPT Plus/Pro)
- Added permission mode restoration when exiting plan mode
- Fixed headless permission wait deadlock
- Fixed
/modelselection for shared-handle model tiers with different reasoning efforts - Fixed subagent model display consistency
0.14.12
Section titled “0.14.12”- Rewrote the Skill tool from load/unload commands to direct invocation (
skill: "name"with optionalargs) - Removed
skillsandloaded_skillsmemory blocks (skills are now listed in system-reminder messages) - Added
--embeddingflag to specify embedding model when creating agents in headless mode - Added
/contextcommand token usage breakdown by category (system, core memory, functions, messages) - Added
showCompactionssetting to hide compaction messages (defaults tofalse) - Added
LETTA_PACKAGE_MANAGERenv var to override detected package manager for auto-updates - Changed featured model from Opus 4.5 to Opus 4.6
- Improved auto-updater to detect package manager (npm/bun/pnpm) instead of hardcoding npm
- Improved subagent auth to inherit credentials from parent, avoiding keychain contention
- Improved keychain availability check to use a non-mutating probe instead of set/delete
- Fixed
UserPromptSubmithook firing repeatedly on message dequeue - Fixed
Stophook using first user message instead of most recent - Removed
Setuphook event type - Updated memfs skill and system prompt
0.14.11
Section titled “0.14.11”- Added prompt-based hooks that use an LLM to evaluate whether actions should be allowed or blocked
- Added
/contextcommand braille area chart showing token usage history across turns - Added skills extraction and packaging for
--from-afagent file imports - Added
max_turnsparameter to Task tool for limiting subagent turn count - Improved message queue to wait for tool completion instead of using a 15-second timeout
- Fixed Shift+Enter by normalizing newlines before keypress parsing
- Fixed keyboard protocol report filtering and scoped Linux Enter key handling
- Fixed
loaded_skillsblock not resetting on new conversation - Fixed memFS system prompt not updating based on
--memfs/--no-memfsCLI flags - Fixed empty assistant message bullets rendering
- Fixed skills directory path shown in extraction message
- Fixed subagent static promotion race during tool result reentry
0.14.10
Section titled “0.14.10”- Added
/contextcommand to show context window usage with visual token bar - Added background task support for
TaskandBashtools viarun_in_backgroundparameter - Added
TaskOutputtool to retrieve output from background tasks - Added
TaskStoptool to stop running background tasks - Added background task completion notifications injected into conversation
- Added
additionalContextsupport forPostToolUsehooks (JSON output parsed for context injection) - Added Claude Opus 4.6 model support
- Improved subagent status display with aligned dots, headers, and dimming for running agents
- Improved tool call dot phases and colors for clearer execution feedback
- Fixed
/downloadcommand to passconversation_idfor non-default conversations
0.14.9
Section titled “0.14.9”- Added number key support (1-9) to approval dialogs for quick selection
- Enabled memfs in headless mode when using
--agentflag - Fixed Enter key handling on Linux terminals that emit
\ninstead of\r - Fixed error handling in headless bidirectional mode
- Fixed MCP skill templates with corrected paths
- Fixed malformed
AskUserQuestionfalling through to generic approval
0.14.8
Section titled “0.14.8”- Added
converting-mcps-to-skillsbundled skill for connecting to MCP servers - Added
PostToolUseFailurehook that runs after tool failures (feeds stderr back to agent) - Added
SessionEndhooks now run on Ctrl+C (SIGINT) - Added conversation renaming when renaming agents via
/rename - Improved
SessionStarthooks with feedback injection - Improved post tool use feedback injection
- Fixed compaction display to show simple “Conversation compacted” message
- Fixed context windows fetched from server instead of hardcoded
- Fixed Windows PATH handling and PowerShell quoting
- Fixed thinking/assistant block spacing preservation during streaming
- Fixed logo resetting to flat frame when loading completes
- Fixed duplicate rendering of auto-approved file tools
- Fixed 409 “conversation busy” errors with exponential backoff
- Fixed flicker on tall approval dialogs
0.14.7
Section titled “0.14.7”- Added trajectory stats tracking and completion summary on exit
- Improved
/memoryviewer to prioritizesystem/directory at top - Fixed input area collapsing during approvals and selector overlays
- Fixed slash command menu render flicker
- Fixed rendering instability that caused line flicker
0.14.6
Section titled “0.14.6”- Added alien art to command preview and exit message
- Added BYOK-aware model resolution with fallback for subagents
- Added network phase arrows to streaming status indicator
- Fixed handling of malformed
AskUserQuestiondata from LLM - Fixed
/usagecommand formatting - Fixed
/memfsposition in command autocomplete order - Fixed mojibake detection to preserve valid Unicode characters
- Fixed loading state layout consistency during startup
- Fixed autocomplete to show “No matching commands” instead of hiding
- Fixed
<Text>encoding non-ASCII characters in Bun
0.14.5
Section titled “0.14.5”- Added
--from-agentflag for agent-to-agent communication in headless mode - Refactored skill scripts into CLI subcommands (
letta memfs,letta blocks, etc.)
0.14.4
Section titled “0.14.4”- Added compaction messages display and new summary message type handling
- Fixed skill diffing code
- Fixed memfs skill scripts
0.14.3
Section titled “0.14.3”- Fixed memfs frontmatter round-trip to preserve block metadata
0.14.2
Section titled “0.14.2”- Fixed extra vertical spacing between memory block tabs
- Fixed Task tool approval dialogs to show full prompt
- Improved memfs sync performance
0.14.1
Section titled “0.14.1”- Enabled Memory Filesystem (memfs) by default for newly created agents
- Added
--memfs/--no-memfsCLI flags to control memfs on agent creation - Fixed Bun string encoding issues
0.14.0
Section titled “0.14.0”This release introduces Memory Filesystem (experimental) - your agent’s memory blocks now sync with local files in .letta/memory/, enabling direct editing and version control of agent memory.
Memory Filesystem (experimental)
Section titled “Memory Filesystem (experimental)”- Added Memory Filesystem (memfs) that syncs memory blocks with
.letta/memory/directory - Added agent-driven conflict resolution for memfs sync conflicts
- Added
/memfscommand to view sync status and resolve conflicts - Added owner tags for tracking block ownership (system vs agent-created)
- Added hierarchical memory organization with
system/prefix for core blocks - Added
syncing-memory-filesystembuilt-in skill for conflict resolution guidance - Updated
/initto create hierarchically organized memory blocks - Updated
defragmenting-memoryskill to use memfs instead of backup/restore scripts
New Models and Providers
Section titled “New Models and Providers”- Added MiniMax M2.1 model support
- Added MiniMax BYOK support via
/connect - Added Kimi K2.5 model support
- Added OpenRouter BYOK support via
/connect - Added AWS Bedrock profile authentication method
- Added Bedrock Opus 4.5 fallback suggestion for Anthropic API errors
Hooks Enhancements
Section titled “Hooks Enhancements”- Added
UserPromptSubmithook that fires when user submits a prompt - Added
reasoningandassistant_messagecapture inPostToolUseandStophooks - Added
LETTA_AGENT_IDenvironment variable injection into hooks - Added “Disable all hooks” toggle in
/hookscommand - Added memory log hook example script
Other Features
Section titled “Other Features”- Added agent-scoped skills directory (
~/.letta/agents/{id}/skills/) - Added user prompt message highlighting
- Added permissions status script
- Changed
conversation_searchto no longer be a default tool (userecallsubagent instead)
- Fixed up/down arrow navigation with newlines in multi-line input
- Fixed cursor visibility on newline characters in multi-line input
- Fixed
@filesearch to excludevenvand dependency directories - Fixed
/feedbackcommand formatting and context - Fixed approval dialog horizontal lines to extend full terminal width
- Fixed default agent creation on first bootup
- Fixed paste support in hooks TUI inputs
- Fixed hooks TUI with Enter to delete and better spacing
- Fixed help text for
letta --newflag - Fixed
UserPromptSubmithooks to not fire for slash commands - Fixed subagents to be marked as hidden on creation
- Fixed LLM error retry to not retry 4xx client errors
- Fixed model selector display on self-hosted when default model unavailable
0.13.11
Section titled “0.13.11”- Fixed agents limit exceeded error and added deletion support in
/agents - Fixed
-mflag to correctly apply model variants with same handle
0.13.10
Section titled “0.13.10”- Added AWS Bedrock support to
/connectcommand - Added multi-server support with settings indexed by server URL
- Added regex tool name matching for hooks (e.g.,
"Edit|Write") - Added message retry on premature interrupt
- Added desktop notification hook script
- Added
rm -rfblock hook script example - Improved
/connectcommand and model selector UX - Disabled Incognito agent creation by default
- Fixed default model selection to use billing tier (free tier uses glm-4.7)
- Fixed self-hosted and localhost model selection during agent creation
- Fixed login screen styling to match other menus
- Fixed error message formatting
0.13.9
Section titled “0.13.9”- Added Stop hook continuation on blocking (hook can keep agent working)
- Added example hook scripts for common patterns
- Improved
memorysubagent to produce hierarchical memory block structures - Improved message queueing for smoother UX
- Fixed backfill failures to be handled gracefully instead of crashing
0.13.8
Section titled “0.13.8”- Added search field to model selector (both Supported and All Available tabs)
- Fixed
/compactto use correct conversations endpoint - Fixed agent info bar layout to prevent overflow
0.13.7
Section titled “0.13.7”- Added Claude Code-compatible hooks system with
/hookscommand for automating workflows - Added cross-platform support for hooks executor (Windows, macOS, Linux)
- Added ViewImage tool for attaching local images to conversation context
- Added search field to model selector on both tabs
- Added Bedrock Opus 4.5 model
- Added conversation ID display in agent info bar
- Added immediate mode for interactive commands
- Improved cancellation with graceful 30s timeout before force-abort
- Fixed bash mode input locking, ESC cancellation, and removed timeout
- Fixed bash mode process group spawn/kill for proper cleanup
- Fixed bash mode Ctrl+C interrupt handling
- Fixed toolset switching to be atomic (prevents tool desync race)
- Fixed hooks config state to use settings as source of truth
- Fixed @ file selection during search debounce
- Fixed 5MB image size limit with progressive compression
- Fixed invalid tool call ID recovery
- Fixed stale queued approvals after successful approval flow
- Fixed Skill tool isolated blocks in conversation context
- Fixed messages starting with
/to be sent to agent when unknown command - Fixed auto-update ENOTEMPTY errors with cleanup and retry
0.13.6
Section titled “0.13.6”- Added image reading support to Read tool (PNG, JPG, GIF, WEBP, BMP files are visually displayed)
- Added shell alias expansion in bash mode (sources from
.zshrc,.bashrc, etc.) - Added query prefill support for
/searchcommand (/search [query]) - Added arrow key navigation for tab switching in
/models - Improved Skill tool output with more explicit success messages
- Added automatic retry for 409 “conversation busy” errors
- Added message restoration to input field after queue errors
- Fixed agent name consistency using single source of truth
- Fixed
/clearcommand output message to clarify messages are moved to history - Fixed streaming flicker with aggressive static content promotion
- Fixed cursor position placed at end when navigating command history
- Fixed ADE links to work in tmux
- Reduced image resize limit to 2000px for multi-image requests
- Fixed queue-cancel hang and stuck queue issues
- Fixed premature cancellation of server-side tools in mixed execution
0.13.5
Section titled “0.13.5”- Added automatic image resizing for clipboard paste (images larger than 2048x2048 are resized to fit API limits)
- Improved error feedback when image paste fails
- Fixed conversation ID being passed correctly to resume data retrieval
0.13.4
Section titled “0.13.4”Default startup behavior reverted to single-threaded experience. Based on user feedback, letta (with no flags) now resumes the agent’s “default” conversation instead of creating a new conversation each time.
| Command | 0.13.0 - 0.13.3 | 0.13.4+ |
|---|---|---|
letta | Creates new conversation each time | Uses “default” conversation |
letta --new | Error (was deprecated) | Creates a new conversation |
letta --continue (no session) | Silently creates new | Errors with helpful message |
- Changed
letta(no flags) to resume the “default” conversation with message history - Repurposed
--newflag to create a new conversation (for users who want concurrent sessions) - Changed
--continuefallback to error with helpful suggestions instead of silently creating new
0.13.3
Section titled “0.13.3”- Added
messaging-agentsbundled skill for sending messages to other agents - Added ability to deploy existing agents as subagents via the Task tool
- Fixed interrupt handling race condition when tool approvals are in flight
0.13.2
Section titled “0.13.2”- Added skills frontmatter pre-loading for subagents (skills defined in subagent configs are auto-loaded)
- Added output truncation for Task tool to prevent context overflow
- Added auto-cleanup for overflow files
- Fixed auto-allowed tool execution tracking for proper interrupt handling
- Fixed hardcoded embedding model (now uses server default)
0.13.1
Section titled “0.13.1”- Added
--defaultflag to access agent’s default conversation (alias for--conv default) - Added
--conv <agent-id>shorthand (e.g.,letta --conv agent-xyz→ uses that agent’s default conversation) - Added default conversation to
/resumeselector (appears at top of list) - Added
working-in-parallelbundled skill for coordinating parallel subagent tasks - Added conversation resume hint in exit stats
- Improved startup performance with reduced time-to-boot
- Fixed stale approvals being auto-cancelled on session resume
- Fixed auth type display on startup
- Fixed memory block retrieval for
/memorycommand
0.13.0
Section titled “0.13.0”This release introduces Conversations - a major change to how Letta Code manages chat sessions. Your agent can now have many parallel conversations, each contributing to its learning, memory, and shared history.
What Changed
Section titled “What Changed”Before 0.13.0:
- Each agent had a single conversation
- Starting Letta Code resumed the same conversation
/clearreset the agent’s context window
After 0.13.0 (updated in 0.13.4):
- Each startup resumes the default conversation (reverted from 0.13.0-0.13.3 behavior)
- Your agent’s memory is shared across all conversations
/newcreates a new conversation (for parallel sessions)/clearclears in-context messages- Use
/resumeto browse and switch between past conversations - Use
letta --newto create a new conversation for concurrent sessions
Migration Guide
Section titled “Migration Guide”If you’re upgrading from an earlier version, you may notice that starting Letta Code puts you in a new conversation instead of continuing where you left off. Here’s what happened:
Your old messages still exist! They’re in your agent’s default conversation - the original message history before conversations were introduced. You can find it at the top of the /resume selector, or access it directly with the commands below.
Easiest way to access them (0.13.1+):
# Use the --default flag with your agent nameletta -n "Your Agent Name" --default
# Or with agent IDletta --agent <your-agent-id> --default
# Or use the shorthand (agent ID only)letta --conv <your-agent-id>The default conversation also appears at the top of the /resume selector.
Alternative methods:
-
View them on the web at
https://app.letta.com/agents/<your-agent-id> -
Have your agent recall them using one of these prompts:
Using the
recallsubagent:Can you use the recall subagent to find our most recent messages? I'd like to continue where we left off.Using the
conversation_searchtool:Can you use conversation_search to find our most recent messages so we can continue where we left off?Using the
searching-messagesskill:Can you load the searching-messages skill and use it to find our most recent messages? -
Export and reference your agent file by running
/export(saves to<agent-id>.af), then ask your agent:I downloaded my agent file to ./agent-xxxx.af - can you read it and look through the "messages" array to find our most recent conversation?
Going forward, all new conversations will be accessible via /resume, and the default conversation is always available via --default.
Full Changelog
Section titled “Full Changelog”- Added Conversations support - each session creates an isolated conversation while sharing agent memory
- Added
/resumecommand to browse and switch between past conversations - Added
--resume(-r) and--continue(-c) flags to resume last session - Added
--conversation(-C,--conv) flag to resume a specific conversation by ID - Added default agents (Memo and Incognito) auto-created for new users
- Changed
/clearto start a new conversation (non-destructive) instead of deleting messages (reverted in 0.13.4) - Fixed Task tool rendering issues with parallel subagents
- Fixed ADE links to include conversation context
0.12.7
Section titled “0.12.7”- Fixed text wrapping in collapsed bash output display
- Renamed
memory-defragskill todefragmenting-memoryto follow naming conventions - Added automatic retry for transient network errors during LLM streaming
- Improved plan mode flexibility for writing plan files
0.12.6
Section titled “0.12.6”- Added
memorysubagent for cleaning up and reorganizing memory blocks - Added
defragmenting-memorybuilt-in skill with backup/restore workflow - Added streaming output display for long-running bash commands
- Added line count summary for Read tool results
- Added network retry for transient LLM streaming errors
- Added Skill tool support in plan mode (load/unload/refresh are read-only)
- Fixed tool approval flow that was broken by ESC handling changes
- Improved Task tool and subagent display rendering
- Fixed UI flickering in Ghostty terminal
0.12.5
Section titled “0.12.5”- Added terminal title and progress indicator for approval screens
- Added
LETTA_DEBUG_TIMINGSenvironment variable for request timing diagnostics - Fixed “Create new agent” from selector being stuck in a loop
0.12.4
Section titled “0.12.4”- Fixed subagent display spacing and extra newlines
- Fixed subagent live streaming not updating during execution
0.12.3
Section titled “0.12.3”- Added LSP diagnostics to Read tool for TypeScript and Python files
- Added
refreshcommand to Task tool for rescanning custom subagents - Added file-based overflow for long tool outputs
- Fixed left/right arrow key cursor navigation in approval text inputs
- Fixed pre-stream approval desync errors with keep-alive recovery
- Fixed subagents not inheriting parent’s tool permission rules
0.12.2
Section titled “0.12.2”- Added
/ralphand/yolo-ralphcommands for autonomous agentic loop mode - Fixed read-only subagents (explore, plan, recall) to work in plan mode
- Fixed Windows PowerShell ENOENT errors with shell fallback
0.12.1
Section titled “0.12.1”- Added
recallsubagent for searching parent agent’s conversation history - Fixed agent selector not showing when LRU agent retrieval fails
- Fixed approval desync issues for slash commands and queued messages
- Fixed SDK retry race conditions on streaming requests
- Fixed pending approval denials not being cached on ESC interrupt
- Fixed stale processConversation calls affecting UI state after interrupts
0.12.0
Section titled “0.12.0”- Refactored to use new client-side tool calling via the messages endpoint
- Added
acquiring-skillsskill for discovering and installing skills from external repositories - Added
migrating-memoryskill for copying memory blocks between agents - Updated skills system (migrating-memory, finding-agents, searching-messages)
- Improved interrupt handling with better messaging
- Fixed ESC interrupt to properly stop streams
- Fixed skill scripts to work when installed via npm
- Fixed Task tool (subagent) rendering issues
- Fixed bash mode exit behavior after submitting commands
- Fixed binary file detection being overly aggressive
- Fixed approval results handling when auto-handling remaining approvals
- Fixed stream retry behavior after interrupts
0.11.1
Section titled “0.11.1”- Added system prompt and memory block configuration for headless mode
- Added
--input-format stream-jsonflag for programmatic input handling - Improved parallel tool call approval UI
0.11.0
Section titled “0.11.0”- Added inline dialogs for improved user experience
- Improved token counter display
- Fixed server-side tools incorrectly showing as interrupted
0.10.5
Section titled “0.10.5”- Fixed Windows installation issues
- Fixed keyboard shortcuts for Ctrl+C, Ctrl+V, and Shift+Enter
0.10.4
Section titled “0.10.4”- Fixed iTerm2 keybindings
- Fixed ESC and CTRL-C handling across all dialogs
0.10.3
Section titled “0.10.3”- Added desktop notifications when UI needs user attention
- Added read-only shell commands support in plan mode
0.10.2
Section titled “0.10.2”- Added Ctrl+V support for clipboard image paste in all terminals
- Fixed keybindings
- Fixed model name display in welcome screen
0.10.1
Section titled “0.10.1”- Added Shift+Enter multi-line input support
0.10.0
Section titled “0.10.0”- Added visual diffs for Edit/Write tool returns
- Added automatic retry for transient LLM API errors
- Added custom slash commands support (
/commands) - Added scrolling and manual ordering to command autocomplete
- Added toggle to show all agents in
/agentsview - Added per-resource queues for parallel tool execution
- Fixed plan mode on non-default toolsets
- Fixed CLI crash when browser auto-open fails in WSL
- Added GLM-4.7 model support
- Added
/newcommand for creating new agents - Added
/feedbackcommand improvements - Added memory reminders to improve memory usage
- Renamed
/resumeto/agents(with backwards-compatible alias) - Fixed plan mode path resolution on Windows
- Added support for bundled skills and multi-source skill discovery
- Increased loaded_skills block limit to 100k characters
- Added support for Claude Pro and Max plans
- Added optional telemetry
- Added
--systemflag for existing agents - Fixed Windows-specific issues
- Added
/helpcommand with interactive dialog - Added
/mcpcommand for MCP server management - Added
/compactcommand for message compaction - Added text search for all models
- Improved memory tool visibility with colored name and diff output
- Added BYOK (Bring Your Own Key) support - use your own API keys
- Added
/usagecommand to check usage and credits - Added
--infoflag to show project and agent info - Added naming dialog when pinning agents
- Added
/memorycommand to view agent memory blocks - Added ‘add-model’ skill for adding new LLM models
- Added Gemini 3 Flash model support
- Added feedback UI
- Added support for relative paths in all tools
- Added tab completion for slash commands
- Added Kimi K2 Thinking model
- Added personalized thinking prompts with agent name
- Added goodbye message on exit
- Renamed
/bashesto/bg
- Added stateless subagents via Task tool
- Added Kimi K2 Thinking model support
- Improved subagents UI
- Added autocomplete for slash commands
- Faster startup with cached tool initialization
- Added
exitandquitas aliases for/exit
- Added profile-based persistence with startup selector
- Added
/profilecommand for managing profiles - Added simplified welcome screen design
- Added double Ctrl+C to exit from approval screen
- Added paginated agent list in
/resume - Added
/descriptioncommand to update agent description - Added message search
- Added
/resumecommand with improved agent selector UI - Added
LETTA_DEBUGenvironment variable for debug logging - Added agent description support
- Added GPT-5.2 support
- Added Gemini 3 (Vertex) support
- Added startup status messages showing agent info
- Added
/initcommand for initializing memory blocks - Added system prompt swapping
- Changed default naming to PascalCase
- Added
/downloadcommand to export agent file locally - Added Skills omni-tool
- Added Claude Opus 4.5 support
- Added toolset switching UI
- Added
--toolsetflag - Added Gemini tools support
- Added model-based toolset switching
- Added eager cancel functionality
- Added sleeptime memory management
- Added
--sleeptimeCLI flag - Added GPT-5.1 models support
- Added Gemini-3 models support
- Added
--fresh-blocksflag for isolation - Added
/swapcommand for model switching
- Added
/linkand/unlinkcommands for managing agent tools - Added Skills support
- Added parallel tool calling
- Added multi-device sign in support
- Added agent renaming capability
0.1.16
Section titled “0.1.16”- Added Sonnet 4.5 with 180k context window
0.1.15
Section titled “0.1.15”- Added multiline input support
- Added
--newflag for creating new memory blocks - Added agent URL display in commands
0.1.11
Section titled “0.1.11”- Added Claude Haiku 4.5 to model selector
- Added project-level agent persistence with auto-resume
- Added API key caching
- Added
--modelflag - Added GLM-4.6 support
- Added autocomplete for commands
- Added up/down for history navigation
- Added
fetch_webto default tool list
0.1.10
Section titled “0.1.10”- Added
stream-jsonoutput format
- Added pretty preview for file listings in approval dialog
- Added
LETTA_BASE_URLenvironment variable support
- Added usage tracking
- Added ESC to cancel operations
- Added Ctrl-C exit with agent state dump
- Initial release of Letta Code, the memory-first coding agent