codex-sm

command module
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2026 License: BSD-3-Clause Imports: 6 Imported by: 0

README

codex-sm

codex-sm is a safety-first local Codex session manager written in Go.

Project design notes:

Compatibility

  • Go: 1.26+
  • Required experiment: GOEXPERIMENT=jsonv2
  • JSON packages: encoding/json/v2, encoding/json/jsontext

[!IMPORTANT] GOEXPERIMENT=jsonv2 is currently required for both build and install. If this env is missing, encoding/json/v2 and encoding/json/jsontext will fail to compile.

Recommended:

export GOEXPERIMENT=jsonv2

It provides:

  • Session listing (list)
  • Session grouping (group)
  • Optional terminal UI (tui)
  • Safe deletion (delete, dry-run by default)
  • Session restore from trash (restore, dry-run by default)
  • Environment diagnostics (doctor)

Features

  • Safe by default:
    • delete runs with --dry-run=true
    • restore runs with --dry-run=true
  • Real operations require explicit intent:
    • --dry-run=false --confirm
  • Default delete mode is soft delete (move to trash)
  • Optional hard delete with --hard
  • Interactive confirmation for real delete/restore (enabled by default)
  • Readable CLI output:
    • compact list view by default
    • HEAD with noise filtering
    • HOST column from session cwd (~ under home)
    • customizable head width (--head-width)
    • detailed mode
    • pager mode (Vim keys: j/k/g/G, plus a/q)
    • colored help/output
    • json/table/csv/tsv formats
  • Optional TUI mode:
    • keyboard navigation (j/k/g/G)
    • tree grouping (--group-by month|day|health|host|none)
    • configurable source (--source sessions|trash)
    • selected session detail view
    • in-TUI delete/restore actions with safety guards
    • semantic preview highlighting (U/A role markers and <...> tag coloring)
    • built-in themes (tokyonight, catppuccin, gruvbox, onedark, nord, dracula)
    • custom theme overrides (--theme-color key=value or config file)

TUI Status

Current TUI is usable for daily browsing and safe cleanup operations:

  • stable session tree navigation and preview scrolling
  • multiple grouping modes for tree browsing
  • readable bottom info bar with host path preview
  • dry-run and real delete from TUI source sessions (d)
  • dry-run and real restore from TUI source trash (r)
  • built-in theme presets and user custom color overrides

Current limitations:

  • TUI still focuses on single-session actions per keypress (bulk actions stay in CLI)
  • layout and color tuning are still being iterated

Configuration

codex-sm loads runtime config from:

  • $CSM_CONFIG (if set)
  • otherwise ~/.config/codex-sm/config.json

Example:

{
  "sessions_root": "~/.codex/sessions",
  "trash_root": "~/.codex/trash",
  "log_file": "~/.codex/codex-sm/logs/actions.log",
  "tui": {
    "group_by": "month",
    "source": "sessions",
    "theme": "catppuccin",
    "colors": {
      "keys_label": "#ffffff",
      "keys_key": "#89dceb",
      "border_focus": "#f38ba8"
    }
  }
}

Common color keys for tui.colors / --theme-color:

  • bg, fg, border, border_focus
  • title_tree, title_preview, group
  • selected_fg, selected_bg, cursor_active, cursor_inactive
  • keys_label, keys_key, keys_sep, keys_text
  • info_header, info_value, status
  • prefix_user, prefix_assistant, prefix_other, prefix_default
  • tag_default, tag_system, tag_lifecycle, tag_danger, tag_success

Build

When building/testing from source, enable:

export GOEXPERIMENT=jsonv2
just build

Or:

GOEXPERIMENT=jsonv2 go build -ldflags="-X main.version=0.1.5" -o codex-sm .

Default local build version is dev. Set VERSION for release builds:

VERSION=0.1.5 just build

Install

Preferred (Go):

GOEXPERIMENT=jsonv2 go install github.com/MysticalDevil/[email protected]

With mise:

GOEXPERIMENT=jsonv2 mise install go:github.com/MysticalDevil/[email protected]

Note:

  • The installed binary name is codex-sm.

Quick Start

# List recent sessions (default limit: 10)
codex-sm list

# Launch interactive TUI
codex-sm tui

# Launch TUI grouped by host
codex-sm tui --group-by host

# Launch TUI with a different source and theme
codex-sm tui --source trash --theme gruvbox --theme-color border_focus=#fabd2f

# Detailed list view
codex-sm list --detailed

# Custom columns, no header
codex-sm list --format csv --no-header --column session_id,health

# Sort by size ascending
codex-sm list --sort size --order asc --limit 20

# Show all with pager
codex-sm list --limit 0 --pager

# Group by day
codex-sm group --by day

# Group by health with sorting and limit
codex-sm group --by health --sort count --order desc --limit 5

# Environment checks
codex-sm doctor
codex-sm doctor --strict

# Dry-run delete (default behavior)
codex-sm delete --id-prefix 019ca9

# Real soft delete
codex-sm delete --id-prefix 019ca9 --dry-run=false --confirm

# Real hard delete
codex-sm delete --id 019ca9c1-3df3-7551-b04b-b2a91c486755 --dry-run=false --confirm --hard

# Dry-run restore from trash
codex-sm restore --id-prefix 019ca9

# Real restore
codex-sm restore --id-prefix 019ca9 --dry-run=false --confirm

Delete/Restore Safety Model

delete and restore targets are selected by flags (not positional args):

  • --id <session_id>
  • --id-prefix <prefix>
  • --older-than <duration> (for example 30d, 12h)
  • --health <ok|corrupted|missing-meta>

Rules:

  • At least one selector is required
  • Dry-run is default
  • Real operation requires --confirm
  • Batch real operation requires approval (--yes or interactive confirm)

Command Help

codex-sm help
codex-sm help list
codex-sm help group
codex-sm help delete
codex-sm help restore
codex-sm help doctor
codex-sm help version

Development

just fmt
just lint
just test            # unit tests
just test-integration
just test-all
just cover
just cover-unit
just cover-integration
just cover-gate
just check
just check-release 0.1.5

# Coverage requirements
# - unit >= 50%
# - integration >= 65%
just cover-gate

Tooling defaults:

  • Formatter: gofumpt
  • Lint: go vet

License

Licensed under the BSD 3-Clause License. See LICENSE for details.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package audit provides JSONL action logging for session delete operations.
Package audit provides JSONL action logging for session delete operations.
Package cli wires codex-sm commands to the internal session and audit services.
Package cli wires codex-sm commands to the internal session and audit services.
Package config resolves runtime paths and default locations used by the CLI.
Package config resolves runtime paths and default locations used by the CLI.
internal
testsupport
Package testsupport provides helpers for fixture-based tests.
Package testsupport provides helpers for fixture-based tests.
Package session implements scanning, filtering, and deletion for Codex sessions.
Package session implements scanning, filtering, and deletion for Codex sessions.
Package util contains shared helpers used by multiple internal packages.
Package util contains shared helpers used by multiple internal packages.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL