All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Exec interpolation
$(key)— reference a stored command with$(key)and its stdout is substituted at read time. Works inget,run, and tree display. Results are cached per interpolation pass so the same command only executes once.- Supports recursion: stored commands can themselves contain
${key}or$(key)references - Circular reference detection across
${}and$()boundaries - 10-second timeout per command execution
--source/-sshows the raw$(key)syntax without executing
- Supports recursion: stored commands can themselves contain
- Tab completion for
:composition inrun/r— e.g.ccli r cd:paths.<TAB>completes the segment after: - Namespace prefixes in
get/gtab completion —ccli g paths<TAB>now includespathsas a candidate so zsh stops at the namespace boundary instead of forcingpaths.
- Zsh completion script: colons in completion values (from
:composition) no longer break_describeparsing - Bash completion script: colons no longer cause word splitting issues (removed
:fromCOMP_WORDBREAKS)
copycommand (aliascp) — copy an entry or subtree to a new key, with--forceto skip confirmation--capture/-cflag onrun— capture stdout for piping instead of inheriting stdio--preview/-pflag ondata import— show a diff of add/modify/remove changes without modifying data- Batch set with
key=valpairs — e.g.ccli set a=1 b=2 c=3 - MCP
codex_copytool — copy entries via MCP with optionalforceto overwrite - MCP
codex_import:previewparameter to return diff text without importing - MCP
codex_run:captureparameter for API consistency (MCP already captures output) --version/-Vnow shown in main help under global options
- Main help (
ccli --help) now shows only commands, subcommands, and global options; per-command options moved to<command> --helpsubmenus setcommand description updated to reflect batch mode support
- Nested subcommand
--helprouting — e.g.ccli data import --helpnow correctly shows import options instead of falling through to root help editwas missing from the tab-completion commands list
editcommand (aliase) — open an entry's value in$EDITOR/$VISUALwith--decryptsupport--json/-jflag ongetandfindfor machine-readable JSON output- Stdin piping for
set— read value from stdin when piped (echo "val" | ccli set key) confirmas a standalone type fordata export,data import, anddata reset- Advisory file locking (
fileLock.ts) — all writes are lock-protected with stale-lock detection - Auto-backup before destructive operations (
data reset, non-mergedata import) in~/.codexcli/.backups/ - MCP
codex_set:encryptandpasswordparameters for encrypted storage - MCP
codex_get:decryptandpasswordparameters for encrypted retrieval - MCP
codex_run:forceparameter to skip confirm check on protected entries - MCP
codex_export,codex_import,codex_reset: support forconfirmdata type - Windows clipboard support via
clipcommand dev:watchnpm script — runstsc --watchfor automatic recompilation during developmentlintnpm script with ESLint andtypescript-eslint(type-checked + stylistic rulesets)
startnpm script — redundant withccliddevnpm script — broken with path aliases and redundant withcclidprepublishnpm script — not used (SEA distribution)
showExamples()referenced non-existent flags-k,-v,-e— now uses valid flagsshowHelp()config signature and subcommands were incorrect — now shows<subcommand>with correct listdisplayAliasesempty-state message referenced deleted command — now showsset <key> <value> -a <alias>data export all -o <file>overwrote the same file three times — filenames now suffixed with type- MCP
codex_runignoredconfirmmetadata — now checks confirm before executing - Data files used default permissions (0644) — now use 0600; directories use 0700
- Hierarchical data storage with dot notation paths
- Command runner with confirmation prompts and dry-run support
- Rich output formatting with color-coded output and tree visualization
- Alias system for frequently accessed paths
- Search with filtering by entries and aliases
- Configuration system (colors, themes)
- Data import/export (JSON format)
- Shell tab-completion for Bash and Zsh
- MCP server for AI agent integration (Claude Code, Claude Desktop)
- Interpolation with
${key}syntax - Value encryption with password protection
- Shell wrapper for running builtins in the current shell
- Clipboard integration
- Per-entry run confirmation (
--confirm/--no-confirmflags,confirm.json) renamecommand for entry keys and aliases (--set-aliasflag)--forceflag onremoveto skip confirmation prompt--sourceflag forgetandrun(show stored value before interpolation)cachedStoreutility with mtime-based caching for aliases, confirm, and data stores- First-run prompt to install shell completions and wrapper
- Consolidated CLI from 13 top-level commands to 7 (
set,get,run,find,remove,config,data) - Moved
export,import,resetunderdatasubcommand - Moved
info,examples,completionsunderconfigsubcommand runcommand now accepts variadic keys with&&chaining and:composition- Removed
--prefixand--suffixflags fromrun - Aliases managed via
set -a,get -a,remove -ainstead of separatealiascommand - Type-aware ESLint linting with
recommendedTypeCheckedandstylisticTypeCheckedpresets
initcommand (replaced by first-run welcome message)- SQLite storage backend and
migratecommand codex_initMCP tool