Aquí hi ha 10 versions de deja-vu, des de 27 de setembre del 2026 fins a l’actual, 0.23.1. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 0.23.1Darrera versió | 24 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióBig stores build and search for less. A cold build peaks at half the memory
it did (4.7 GB instead of 9.4 GB on 40,000 sessions, 2.4 GB instead of 4.0 GB
on a 12,000-session Codex store), redacts with 17x less CPU, reads each
transcript line once and writes a quarter of the scratch data. The slowest
searches answer in under 200 ms in process instead of up to 800, and a search
over many copies or look-alike sessions is no longer quadratic, a slowdown
0.23.0 made worse. MiniMax Code is the forty-third harness, a directory tree
can be named as one project in ~/.config/deja/projects, and
deja search --sort date lists the newest match first. A friction wall that
was fixed leaves the session-start block. deja secrets --scrub
no longer breaks the transcripts it rewrites. The index is rebuilt once on
upgrade.
Added
- MiniMax Code: sessions under ~/.minimax/v2/sessions are indexed with the
person's own words rather than the runtime's reminders, deja resume prints
mcode --session <id>, and deja install mcode / mcode-auto write the MCP
entry and a hook plugin. From @yangala (#5415, #5593).
- ~/.config/deja/projects names a directory tree as one project, one
<path> = <name> per line. Every checkout and worktree under a listed path
is indexed under that name, and the hooks and recall standing anywhere in it
scope to all of them. Editing the file renames nothing already indexed:
deja index and deja doctor say a rebuild is due, deja index --rebuild
renames the sessions whose transcripts are still on disk, and sessions
indexed before the file existed still match from their own checkout until
then. The exclude file wins over an alias, so a repository excluded by its
own name stays out. From @Maweill (#5097, #5373).
- deja search --sort date lists the newest match first, in the text and in
--json, and ^s in the search screen turns the list newest first under
day headings and back. On a common word the page is the newest of the whole
match, not the newest of the best-ranked thousand (#5577, #5587).
- Guides for deleting Antigravity and Junie history. From @notsubash (#5604)
and @Kasa-Harendra (#5624).
- A friction wall whose cause was fixed no longer stays in the session-start
block for good. It drops out after 30 days without a hit while its projects
keep getting new sessions, and deja friction --settle <id> takes it out at
once, using the id each row of deja friction now prints. A session started
after the settle that hits it again brings it back; --unsettle undoes it.
Reported by @SmoothSailingMusic (#5628, #5631).
Changed
- A cold build reads each transcript line once instead of handing it to six
readers that each decoded it again, and checks tool output for known errors
in one pass per line: 60 s instead of 87 s and 353 CPU-seconds instead of
551 on 40,000 sessions (#5586). It also keys messages without allocating a
string per word, which halves the indexing phase: 9.3 s to 4.2 s on a
12,000-session Codex store, and the whole build from 273 to 215
CPU-seconds (#5567).
- A cold build peaks at half the memory: 4.7 GB instead of 9.4 GB on a
40,000-session store. The message count and the rebuild's dedupe set key on
a hash instead of the text, and a full build runs the collector at GOGC=25
unless GOGC or GOMEMLIMIT is set (#5498). A store under 20,000 sessions no
longer holds every session's words at once to count which words go
together: a 12,000-session Codex store peaks at 2.4 GB instead of 4.0 GB
(#5533).
- Redacting secrets during a build takes 17x less CPU with the same output: on
a 12,000-session Codex store the cold build went from 109 s to 45 s wall and
904 s to 285 s of CPU (#5512).
- A cold build derives each session's row on every core instead of in the
write loop: 189-202 s to 157-169 s on a 40,000-session store (#5524).
- A cold build writes a quarter of the scratch data it did, so a busy disk
no longer stalls it: 2.47 GB to 0.59 GB on a 12,000-session Codex store, and
indexing messages took 15-20 s instead of 32-35 s with the dis |
| 0.23.0 | 21 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióBig stores are cheap to keep up to date. A pass that replaces a few sessions
appends their records instead of writing the whole log again and reads only
what changed: on a 40,000-session store 20 rewritten transcripts take 1.7 s
instead of 24 s, and peak memory drops from 7 GB to under 1 GB. A search for a
word most sessions hold answers in about a second instead of 24. Text taken
out of a transcript leaves the index on the next pass. For busy machines there
are DEJA_NO_AUTO_INDEX and DEJA_SEARCH_ONLY, and deja index exits 3 on a
partial run. Sub-agents are sessions of their own in every reader that marks
one, forks no longer take credit for what they copied, and recalled history
can no longer run a command in opencode or end a dsh turn. The index is rebuilt
once on upgrade.
A search for a word most sessions hold no longer reads all of them to show a page. Past 1,000 matches it ranks them first from the postings and the manifest, then reads the 1,000 that can reach the page and 200 more that check its length estimate; the total still counts every match, and --all scores every one as before. On a 40,000-session store a word in every session takes 1.1 s and 370 MB instead of 24 s and 2.6 GB, and MCP recall 2.5 s instead of 30 s (#5467).
The first index pass after a full build that rewrites, deletes or renames transcripts no longer reads the whole record log for the command-failure table: on a 40,000-session store, 20 rewritten transcripts take 4.0 s instead of 21 s, and the build leaves the table's state for that pass to start from (#5465). Renaming a transcript that shares its session with another file reads the session again only when the rename moves it past another of its files; 20 renames on the same store take 3.2 s instead of 20 s (#5466).
deja --re anchors ^ and $ at each line, as grep does. They anchored the whole message, so ^panic: missed a panic printed after any other tool output (#5448).
deja embed no longer sends a whole Cursor, Continue or Cline session again each time it grows. Those harnesses date unstamped turns from the file's modification time, and the vector identity held the time; it now holds only the session, role and text, so a session grown by one exchange embeds 2 records instead of every one. A version 2 sidecar is rekeyed on the next run without embedding again (#4976).
A search excerpt keeps the line that matched when it looks like tool noise. Searching assignment to entry in nil map showed the stack frames of a Go test panic and dropped the panic: line itself; panic:, goroutine N, npm ERR! and numbered lines are still left out when they do not hold the match (#5456). A --re search that finds nothing suggests a looser pattern, dropping ^/$, or plain words, instead of "try fewer words or --re" (#5457).
deja sync import also leaves out a peer's records for a store DEJA_EXCLUDE_HARNESSES (or a harness: line) excludes and for a project the policy ignore rule covers, and says how many; a relay no longer sends an excluded store's sessions on (#5435). The sync-timer unit carries the DEJA_* and XDG_* settings of the shell it was installed from, so a timer run syncs into the same index under the same switches (#5436).
A dsh turn no longer fails when recalled history contains {{...}}. dsh read deja's project digest and recall as prompt templates, so a past session quoting {{cwd}} ended every new turn with unknown prompt variable before the model was called; both contexts now pass interpolate: false and split the braces ({ {cwd} }), which dsh before 0.2.1-alpha.2 needs, in the npm plugin and in deja install dsh-auto (#5421).
deja sync holds a peer's records to this machine's switches: DEJA_INDEX_TOOL_OUTPUT=0, DEJA_INDEX_COMMANDS=0, DEJA_INDEX_PATHS=0, DEJA_INDEX_EDITS=0, DEJA_INDEX_WRITES=0 and DEJA_INCLUDE_SUBAGENTS=0 leave the same records out of an import as out of a local read, and the import says how many (#5425).
Recalled history can no longer make opencode run a command or attach a file. opencode expa |
| 0.22.2 | 17 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versiódeja now reads Windsurf / Devin Desktop: Cascade's encrypted conversation
files are decrypted, authenticated and indexed, and deja install windsurf
adds the MCP server, a global rule, the skill and a /deja workflow. That
makes 42 harnesses. Grok Build installs the plugin from this repository's own
marketplace, and a Spec Kit extension ships with each release. The person sees
more of what deja did: the first session names an error the machine keeps
hitting, the weekly note names the session agents used, and dsh, Hermes,
OpenClaw and Gemini show deja's line where the person reads it. Kimi Code and
Qwen Code edit calls are pinned by fixtures from @beiryu.
deja delete and D in the TUI erase a session from its agent and from
deja after asking. Claude Code sessions whose transcript is gone come back as
their prompts from history.jsonl, and without zstd a compressed rollout no
longer makes every search rewrite the index.
Changed
- deja's lines for the person fit on one line each, and a session start shows the recall receipt plus at most one once-only note (the built note, what changed, the week note, the GitHub line), so a fresh install no longer opens with four lines. The receipt drops its byte count and the docs line folds into the built note. What the model receives is unchanged.
Added
- DEJA_THEME=dracula paints the interactive screen in the Dracula palette, for terminals themed that way. light and dark work as before, and a name deja does not know still falls back to the terminal background. From @demrom (#5106).
- deja delete <id> and D in the TUI erase a session from its agent and from deja's index, after asking; there is no undo. --dry-run lists the files. Claude Code, Codex, Cursor CLI, Gemini CLI, Qwen Code, Copilot CLI, Cline CLI, Kimi Code, Grok, dsh, pi, Senpi, OpenClaw and Antigravity are removed as files, opencode through opencode session delete. Running sessions, shared stores and unchecked agents are refused.
- A guide on deleting Copilot CLI session history: find the session by the id in session.start, not the directory name, and what copilot --resume loses. From @beiryu (#4965).
- A guide on deleting Qwen Code chat history: the chat file, its sub-agent logs, and what qwen -r loses. From @beiryu (#4966).
- Claude Code sessions whose transcript is gone come back as their prompts. ~/.claude/history.jsonl keeps every typed prompt and paste with its session id after the cleanup deletes the transcript, so those sessions are searchable again, filed under the directory they ran in. Only the prompts: deja show says so, and deja resume refuses one. A session with its transcript on disk, or one deja kept after it was deleted, is left to the transcript. DEJA_CLAUDE_HISTORY_FILE moves the file (#5046).
- The guide on deleting old Claude Code sessions in Chinese, with the same commands and numbers: 368 of 1,320 files are older than 30 days and hold 4% of the bytes, while the ten largest hold 86%. From @beiryu (#4970).
- The Claude Code and Cursor memory guides in Chinese, with the same commands and numbers. From @Quartex246 (#5019, #5020).
- The Codex CLI history guide in Chinese: where the rollouts live, why a plain grep stops seeing sessions older than a week, the jq and sqlite3 recipes, and search and SSH sync. From @ursasi (#5085).
- Five more guide pages in Chinese, with their commands and paths kept verbatim: deleting Codex sessions, deleting Cursor chats, Codex resume and its two errors, the Claude Code "No conversation found with session ID", and the full context window with its measured 77% / 0.2%. From @ursasi (#5080, #5081, #5082, #5083, #5084).
- Shell completion for deja recall: --project, --harness with the harness names, and --limit in bash, zsh, fish and PowerShell, where it used to offer search flags recall refuses. zsh's command list now offers recall too. From @orshih6 (#5015).
- A Spec Kit extension: /speckit.deja-vu.recall searches past agent sessions for the current feature's spec and plan and reports what |
| 0.22.1 | 12 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióReading a session back now shows the code it changed, each edit as the lines
it removed and added, for Claude Code, Codex and every harness whose
transcript holds its edit calls. A Codex session opens in the ChatGPT desktop
app with deja resume <id> --app, and the screen gets find in a session,
filters in the box and cards that lead with the question. Session start takes
0.38 s instead of 1.46 s and the per-prompt hook 0.59 s instead of 1.65 s on a
19k-session index, and an opencode 2.x store no longer stalls a new session's
first request. Secrets that slipped past redaction are masked, and the index
holds up under crashes and concurrent use. The index version is now 70, so the
store rebuilds once on the first run after upgrading.
Added
- Reading a session back shows the code it changed, each edit as the lines it removed and added. MCP recall_context and the session resource put it ahead of the conversation, deja ctx after the digest. Drafts the session rewrote are folded into their final form, the project's code comes before its tests, and the agent's reproduction scripts and notes are left out. On 48 SWE-ContextBench tasks the session that fixed the same code used to arrive with none of its fix; now 14 show most of it. Read from the transcript when asked, so the index stays the same size and keeps the written side as hashes. Claude Code, Codex and any harness whose transcript holds its edit calls as JSON, one session per file (#4935, #4950, #4955).
- deja resume <id> --app opens a Codex CLI session in the ChatGPT desktop app on macOS and Windows, and the screen's continue picker offers the app first for a Codex session (#4907).
- The screen's cards lead with the question asked, the home list is grouped by day, and dates count calendar days. The preview shows how the session went, turn by turn, with the commands and the files it edited. In the reader / finds a word in the session, n and N step through the matches, ] and [ jump between the turns you asked, and t unfolds long messages. The box takes filters: an agent with a colon (codex:), today, yesterday, week, month and in:<project>. A search that finds nothing names the other projects that have it, or the spelling your history uses. The Kept tab is now Deleted, headed "Deleted by their agent, kept by deja", and tab cycles this project, all projects and Deleted. The continue picker preselects and marks the agent used last and folds agents not installed into one line. ^k also copies the session id or project path and forgets a session, after asking, and ? lists every key (#4911).
Changed
- Reading one session back no longer walks the whole record log: a table beside it says where each session's records are, and the first line of each repeated error is kept at build time. On a 19k-session index session start takes 0.38 s instead of 1.46 s, MCP recall 0.95 s instead of 1.29 s and deja show 17% less, for 0.33% more index. A full rebuild there takes about 3 s longer to write the error lines (#4940).
- Hooks answer faster on a large history: on a 19k-session index the per-prompt hook takes 0.59 s instead of 1.65 s and a cold session start 0.74 s instead of 1.42 s, with the same output. Worktrees are listed once per hook instead of once per name lookup, projects are scoped once per name, long sessions are scanned on all cores, and repeated errors are read back in one pass over the record log. The session-start hook runs git status without taking the repository's optional lock (#4934).
- Switching tabs on the screen takes 7 ms instead of 46 for this project and 21 instead of 74 for all projects on 27k sessions, and Deleted is instant: the count of every session is read again only after the index changes, and the newest 60 are picked without sorting all of them (#4915).
- The screen's first run shows the index being built: the stage, a bar, each agent ticking in with its session count and the seconds so far, and it lets you in once the newest sessions are searchable. The first open a |
| 0.22.0 | 9 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióBare deja at a terminal now opens a search screen over every agent's
history: type to search, read a session at the hit, resume it, or carry it
into another agent. It opens on the sessions behind your uncommitted change.
Junie and JetBrains AI Assistant are read, deja rules sync writes to 42
agents instead of 8, and recall called by an agent puts the project it works
in first, which took a planted answer from 20 to 43 of 56 real queries. A
transcript its agent deleted no longer makes every search answer stale. The
index version is now 69, so the store rebuilds once on the first run after
upgrading.
Added
- Bare deja at a terminal opens a search screen over every agent's history. Type to search, read a session at the hit, resume it, or carry it into another agent with ctrl-o. It opens on the sessions behind your uncommitted change, and on a first run it builds the index behind the screen instead of before it. Pipes, TERM=dumb and DEJA_TUI=0 keep the text summary.
- The first run of a new version says once what it brings: the top three changes in the terminal, one line in the session-start note.
- An empty search in a terminal shows the surprised cat, and the first search that finds something shows the ready one, once per index.
- An interactive command says, at most once a day, when a newer deja release is out, with the upgrade command for whatever installed it (deja update, brew, npm, scoop). The look at GitHub runs in a detached process and the next interactive command prints what it found, so no command waits on the network. Hooks, the MCP server, pipes, dev builds, deja update, deja doctor and deja version never start it, and DEJA_OFFLINE=1 or DEJA_NO_UPDATE_NOTICE=1 turns it off with no request made (#4622).
- After a search that finds something, in a terminal, deja shows one short tip at most once a day, naming a command you may not have met: blame, fix, how or view, in rotation. It goes to stderr and never appears in a pipe, a script, a hook or --json (#4629).
- Kimi Code and Kiro get the line about a file before an edit, and CodeWhale the fix pair for a failed command. None of them shows the model what that hook prints, so the line waits for the next hook that does: the next prompt on Kimi and Kiro, the next tool call or message on CodeWhale. CodeWhale also hands over the pre-tool line of a call that failed to run, which it sends back without it.
- deja resume <id> --write-back puts a session the agent deleted back where the agent can reopen it, rebuilt from deja's index in the agent's own format. The file holds the user and assistant turns; tool calls and their output stay in deja, which keeps them and reads only what the agent appends later. Works for Claude Code, Codex, Gemini CLI, Qwen Code, pi, omp, gjc, Kimchi, Senpi, Kimi, Copilot CLI, CodeBuddy, Command Code, CodeWhale, Cline, OpenClaw, Continue, Grok Build and Kiro CLI, each checked by resuming the written file in the real CLI. For agents that keep sessions in a database, or whose format needs something the index lacks, it says what is missing. It never replaces a file and writes only inside the agent's store (#4617).
- aider edits record both sides, read from the SEARCH/REPLACE block, unified diff or patch in the reply once aider says it applied them, so deja restore and line-level deja blame answer for aider sessions (#595).
- VS Code Copilot Chat edits record the replaced text, read from the edit call's arguments, so deja restore and line-level deja blame answer for them. On one machine's store that is 638 spans where there were none. The extension's agent transcripts record both sides of an edit and its file (#595).
- Junie and JetBrains AI Assistant are read. Junie gets junie and junie-auto (hooks, MCP, skill, /deja, rules, resume); AI Assistant gets jetbrains, the MCP server in ~/.ai/mcp/mcp.json. Agent chats that run Junie, Claude, Codex or another agent with its own store are left to that store (#3104).
- deja rules sync writes to 42 agents, up from 8. |
| 0.21.7 | 6 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióAgents now look up past decisions before they change code, config, a
dependency or a schedule, not only when asked about history. On Claude Code
that took a test set from 0/10 to 10/10. Recall got more reliable where it was
quietly failing: it no longer answers empty when the only full match is the
agent's own session (23 of 255 real calls did), and a file path finds the rule
written for its directory. A first build on a store of long sessions answers
at 19 s instead of 44 s. New harnesses: TRAE CLI and TRAE IDE, CodeBuddy Code,
WorkBuddy and Muse Code. The index version is now 67, so the store rebuilds
once on the first run after upgrading.
Added
- TRAE CLI 2.0 sessions are read from ~/.trae/cli (TRAE_HOME, DEJA_TRAE_ROOT) as harness trae, with their own doctor row and traex resume. Prompts come only from TRAE's user events, so the runtime context it writes under the user role is not indexed as something you said (#4680).
- CodeBuddy Code sessions are read from ~/.codebuddy/projects, WorkBuddy's from ~/.workbuddy/projects, and Muse Code's from ~/.local/share/muse/sessions; deja install codebuddy and codebuddy-auto wire recall into CodeBuddy (#4681, #4679).
- deja install workbuddy and workbuddy-auto wire recall into WorkBuddy, whose agent reads its config from the WorkBuddy home rather than ~/.codebuddy; a new MCP file there is the app's own mcp.json (#4720).
- deja install trae adds the MCP server to TRAE CLI's traecli.toml, and trae-auto adds the session-start, per-prompt, tool and compaction hooks to its hooks.json; TRAE runs them once you trust them at start-up (#4702).
- deja install trae-ide wires TRAE IDE: the MCP server in User/mcp.json and the skill in ~/.trae/skills (Trae CN and ~/.trae-cn for the CN build; with both builds installed, each gets its own). trae-ide-auto adds hooks to ~/.trae/hooks.json, which TRAE IDE runs only after you turn hooks on in Settings > Hooks; install and doctor both say so. Its chats are encrypted and not indexed (#4731).
Changed
- A first build on a store of long sessions answers sooner: the early slice of newest sessions stops at 20,000 messages as well as 200 sessions. On 3,871 sessions and 370k messages, recall comes online at 19 s instead of 44 s and the build ends at 45 s instead of 64 s (#4768).
- Agents call deja before they change code, config, a dependency or a schedule, not only when asked about past work. The line is in the MCP server instructions, every skill and guidance file, and the npm plugins' deja_recall. On Claude Code the instructions also say how to load the deferred tool. On 10 synthetic change tasks with a recorded decision, Opus on Claude Code went from 0/10 to 10/10 (#4760).
Fixed
- Recall no longer comes back empty when the only sessions holding every word of the question are filtered out, most often the agent's own live session. It falls through to the ranking. Replayed on 255 real recall calls, 23 had come back empty this way (#4766).
- Recall by file path finds what was settled for the file's directory: cmd/reconcile/match.go used to miss a session that set the rule for cmd/reconcile, or rank it under one sharing a single word. Those sessions now come first, and recall says they are about the directory rather than "No session is about this" (#4762). They stay below a session that already answers two of the query's other words (#4764).
- The session-start note about a limit hit in another agent fires on Claude Code's real wording ("You've hit your session limit", "You've hit your limit", "API Error: 529 Overloaded"), and reads the newest session of this project from another harness; a parallel session anywhere on the machine used to hide it (#4758).
- The per-prompt hook searches on the question even when an instruction comes before it on the same line ("without reading any files: what jitter constant…"); the instruction used to take all six search terms and the hook stayed silent (#4751).
- Kilo CLI: a store where a few sessions went through Kilo's /api/sessi |
| 0.21.6 | 4 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióThis release is mostly about what reaches the model, and when. After a
compaction, opencode, Kilo, Hermes and Gemini CLI now get the recovery packet
Claude Code already had, and the packet carries the user's standing
instructions and first request. deja handoff builds from the end of a
session instead of the start, and agents can fetch it over MCP. Hermes and
Copilot CLI get the after-failure fix line. The per-prompt hooks send less:
spawned agents get a one-line pointer, the line before a Bash command is now
opt-in with DEJA_COMMAND_HINTS=on, and the file line before an edit speaks
only when it has something about the file. Telegram bot tokens are redacted,
and a secret ending in punctuation is masked whole. The index version is now
64, so the store rebuilds once on the first run after upgrading.
Added
- Compaction recovery packet for opencode, Kilo, Hermes and Gemini CLI: after a compaction the next turn gets the commands, errors and state from before it, as in Claude Code. Run the matching deja install <client>-auto again to update the plugin. Also fixes a Gemini parser bug where a resume dropped earlier commands (#4641).
- The compaction packet carries the user's standing instructions from any turn ("never", "do not", "always", "use X instead of Y", "не трогай" and the like, up to 8 lines), and the session's first request when the latest one is just a step. On 60 days of real transcripts, 276 of 2,486 sessions get rules (#4656).
- deja handoff takes its body from the compaction packet, so conclusions come from the end of the session (median position 0.88-1.00 on 12 real sessions, was 0.00-0.37). The MCP tool has a handoff mode, and a session whose first prompt asks to continue another one by id or harness name gets the packet (#4674).
- After a failed terminal command, Hermes and Copilot CLI get the fix this machine found for the same error before, through Hermes' transform_tool_result and a Copilot postToolUse hook. Run deja install hermes-auto or copilot-auto again to get it (#4660).
- deja doctor follows every hook, plugin and MCP entry to the deja binary it runs and prints one row per binary older than the one running doctor, with the update command (#4658).
- show, resume and handoff accept a Claude Code remote-control id (session_01…) or its claude.ai/code URL (#4668).
Changed
- The line before a Bash command is off unless DEJA_COMMAND_HINTS=on, and a spawned agent gets the one-line pointer instead of the full digest. On 200 real Task prompts that went from 257,769 B to 67,217 B (#4644).
- The file line before an edit only speaks when it carries something about the file: a note or decision naming it or its directory, or a command that passed there. On 480 replayed edits, 20 lines (7,290 B) went to 2 (659 B) (#4646).
- Full per-prompt digests are capped at four per session, later matches get the pointer line. On 120 real prompts, 129.8 KB to 50.5 KB injected (#4637).
- The opencode session digest goes after opencode's system prompt, so the provider cache reuses the base prompt. Uncached input on the first request went from 3,988 to 1,941 tokens (median) (#4650).
- MCP calls run in parallel (up to 4 read the index at once), honour cancel, and a call still running at 20 s (DEJA_MCP_DEADLINE) returns a note instead of a client timeout. p95 on batches of 4 went from 11.4 s to 6.3 s (#4639).
- Claude Code compaction summaries and Gemini state snapshots are filed under the summary role, as opencode and Hermes already were, so recall stops quoting them as the user's words (#4678).
- Install resolves far fewer paths: a 39-target install goes from 2,435 to 268 symlink walks, uninstall from 857 to 312 (#4635).
Fixed
- Telegram bot tokens are redacted and named in deja secrets. On a rebuilt real store, raw tokens in the index went from 11 copies to 0. The Russian filler rule no longer re-masks an earlier marker into [redacted:[redacted:credential]] (#4676).
- A key-value secret that ends in punctuation is masked whole. --passwor |
| 0.21.5 | 2 d’octubre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióMost of this release came from two rounds of running every supported harness
live, about 40 clients, and fixing what deja got wrong in each. Sessions it
could not read are indexed, tool calls and exit codes it dropped are kept,
deja resume prints a command that reopens the session, install and uninstall
stop breaking client configs, and a session no longer gets its own work back
from recall. copilot-auto, kilocode-auto and kiro-auto start those
clients' sessions with the project digest, and deepseek-auto gives dsh the
notes on reads, edits and failed commands other harnesses get. Kimi /btw
side questions and dsh 2.0.15's v4 logs are indexed. deja index and
deja doctor warn about sessions a harness's own cleanup will delete this
week (#4604), and an interrupted deja embed keeps what it already computed
(#4568). Release checksums are now signed as a sigstore bundle, checked with
cosign verify-blob --bundle checksums.txt.sigstore.json.
Added
- deja install copilot-auto adds a sessionStart hook to Copilot CLI, so a new or resumed session starts with the project digest, as in Claude Code and Gemini CLI. The hook goes under hooks in ~/.copilot/settings.json (or config.json while your own hooks are still there, since Copilot moves them on start), and uninstall gives the file back byte for byte. It also wires preMcpToolCall and sessionEnd, so MCP recall leaves out the session asking however long it runs (#4231, #4551).
- deja install kilocode-auto starts each Kilo CLI session with the project digest. Kilo kept opencode's plugin loader, so it writes opencode's plugin, in the 1.x shape Kilo loads, into ~/.config/kilo/plugins (#4398).
- deja install kiro-auto writes a deja agent for kiro-cli whose agentSpawn hook puts the project digest in front of the model and whose userPromptSubmit hook adds recall for each prompt. Start it with kiro-cli chat --agent deja, or make it the default with kiro-cli agent set-default deja. deja leaves your default agent alone (#4304).
- deja install deepseek-auto gives dsh the point-of-action notes: after a read, edit or write the model hears what past sessions settled about that file, and after a failed bash, the fix this machine found for the same error before. It uses dsh's tools/post-execute seam, so run the install again to get it (#4293).
- deja install grok-auto wires PostToolUse, so a Grok Build command that fails gets the earlier fix, as Claude Code and Codex do (#4499).
- deja index and deja doctor say how many sessions Claude Code, Gemini CLI or Hermes will delete with its own cleanup in the next 7 days, read from that harness's retention setting (cleanupPeriodDays, general.sessionRetention, sessions.retention_days). deja keeps them searchable after the files go. Nothing is printed when nothing is due (#4604).
- A Kimi Code /btw side question is indexed with its answer, from Kimi 0.28 through 2.x, as its own session naming the one it was asked in, without the copy of the session context the fork opens with. deja resume on it points at that session, and doctor no longer counts it as a skipped sub-agent (#4484).
- More of what clients keep is indexed: ZCode's older snapshots under ~/.zcode/v2/sessions (#4432), Cherry Studio agents that run on pi or dsh (#4342), prime-agent rlm.spawn children as sub-agents of the session that spawned them (#4407), and kiro-cli chat --no-interactive runs kept only in data.sqlite3 (#4300). DEJA_INCLUDE_SUBAGENTS=1 now takes Kimi Code and Qwen Code sub-agent logs, where it did nothing (#4483).
Changed
- Releases are signed with cosign 3 and carry checksums.txt.sigstore.json in place of checksums.txt.sig and checksums.txt.pem. Verify with cosign verify-blob --bundle checksums.txt.sigstore.json as SECURITY.md shows (#4577).
- One directory is one project whichever agent ran there. Codex, opencode, goose, Cursor, Gemini CLI, Grok, Amp, aider, Copilot Chat, Zed and others named a session in /tmp/w/my-app my-app where Claude Code says w/my-app, and Cline, Roo, Continue, Kiro |
| 0.21.4 | 29 de setembre del 2026 | — | 64 bits ZIPARM64 ZIP Notes de la versióOne rules file for every agent: deja rules sync copies yours into the global
rules file of each installed agent, and deja rules candidates finds the
corrections you keep repeating so your agent can suggest them as rules. On
Windows, Claude Code's hooks run again; they had been exiting 127 on every call
while doctor said they were wired, and doctor now says so. Chats deleted from
Cursor's database, or left behind when a bloated one is moved aside, stay
searchable through a full rebuild. deja also installs as a Hermes memory
provider straight from Hermes, and from winget on Windows.
Added
- deja rules keeps the rules you give your agents in one file, ~/.config/deja/rules.md, and deja rules sync copies it as a marked block into the global rules file of each installed agent that has one deja knows: Claude Code, Codex, opencode, Gemini, Qwen, Kimi, Grok and goose. A rule given to one agent used to stay there; on the machine this was measured on, seven were given again in other agents. doctor names an agent whose copy is behind, and uninstall takes the block out.
- deja rules candidates lists the turns where you corrected an agent, and the deja skill tells your agent how to group them into suggested rules, with the turns behind each one, and to write only the ones you pick. deja leaves the grouping to the agent because it measured badly without one: three word-based groupings found 0 real rules in their top 10, while a frontier model given the same list found 10 of 10. A small local model did not manage it, so this wants a strong agent.
- hermes plugins install vshulcz/deja-vu/extensions/hermes installs deja as a Hermes memory provider without deja install. It is the provider deja install hermes-auto writes, with deja taken from PATH, and a test keeps the two identical.
- On Windows, winget install vshulcz.deja-vu installs deja from the winget community repository, next to scoop install deja-vu.
Fixed
- A full rebuild keeps the chats Cursor deleted from state.vscdb, and the ones left behind when a bloated database is moved aside and Cursor starts over. The incremental pass already kept them; a rebuild read the database and wrote only what is in it now, so they went at the next content-version bump. The same holds for the other database-backed stores (#4128).
- On Windows, Claude Code's hooks run again. deja wrote the binary's path with backslashes, Claude Code hands hook commands to Git Bash, and bash strips unquoted backslashes, so every hook exited 127 without a word (#4116). Hook commands now name the path with forward slashes, which bash, cmd.exe and PowerShell all run (a path with a space stays double-quoted, as before). Existing configs are rewritten on the first run after upgrading.
- deja doctor says when Claude Code's hooks cannot start, not only when their binary is gone. It asks the shell Claude Code runs hooks in (Git Bash on Windows) for the binary as the settings file spells it, the check that would have caught #4116's 127 on every hook while doctor printed wired (#4125).
- deja warmup and deja version refuse arguments instead of ignoring them. deja warmup --rebuild ran the ordinary incremental build and exited 0; it now fails and names deja index --rebuild, which is where the rebuild lives (#4109, contributed by @Sharawey74).
- The OpenClaw plugin reaches ClawHub with each release again. ClawHub mints a publish token only for a workflow_dispatch run and refused every tag push since 0.21.0, so the tag run now dispatches release.yml with the tag and that run publishes.
Changelog
Features
- feat(hermes): the memory provider installs with hermes plugins install, from extensions/hermes (#4122)
- feat(rules): deja rules candidates lists your corrections, and the skill groups them into rules you pick (#4093)
- feat: deja rules copies one rules file into every installed agent's global rules file (#4089)
Fixes
- fix(doctor): say when the shell cannot start Claude Code's hooks, not only when the binary is gone (#4127)
- fix(ind |
| 0.21.0 | 27 de setembre del 2026 | — | 64 bits ZIPARM64 ZIP |