Releases: docker/cagent
v1.20.4
This release improves session handling with relative references and tool permissions, along with better table rendering in the TUI.
What's New
- Adds support for relative session references in --session flag (e.g.,
-1for last session,-2for second to last) - Adds "always allow this tool" option to permanently approve specific tools or commands for the session
- Adds granular permission patterns for shell commands that auto-approve specific commands while requiring confirmation for others
Improvements
- Updates shell command selection to work with the new tool permission system
- Wraps tables properly in the TUI's experimental renderer to fit terminal width with smart column sizing
Bug Fixes
- Fixes reading of legacy sessions
- Fixes getting sub-session errors where session was not found
Technical Changes
- Adds test databases for better testing coverage
- Automatically runs PR reviewer for Docker organization members
- Exposes new approve-tool confirmation type via HTTP and ConnectRPC APIs
What's Changed
- docs: update CHANGELOG.md for v1.20.3 by @docker-read-write[bot] in #1563
- Always permissions for tools commands by @stanislavHamara in #1558
- Test older database by @dgageot in #1576
- Handle relative session references in --session flag by @vvoland in #1559
- Wrap tables properly in the TUI by @krissetto in #1564
- Automatically run PR reviewer if author is org member by @derekmisler in #1565
Full Changelog: v1.20.3...v1.20.4
v1.20.3
This release migrates PR review workflows to packaged actions and includes visual improvements to the Nord theme.
Improvements
- Migrates PR review to packaged cagent-action sub-actions, reducing workflow complexity
- Changes code fences to blue color in Nord theme for better visual consistency
Technical Changes
- Adds task rebuild when themes change to ensure proper theme updates
- Removes local development configuration that was accidentally committed
What's Changed
- Migrate PR review to packaged cagent-action sub-actions by @derekmisler in #1543
- docs: update CHANGELOG.md for v1.20.1 by @docker-read-write[bot] in #1556
- docs: update CHANGELOG.md for v1.20.2 by @docker-read-write[bot] in #1557
- Change the code fences to blue in nord by @rumpl in #1560
- task rebuild if themes change by @krissetto in #1561
- remove local dev oopsie by @krissetto in #1562
Full Changelog: v1.20.2...v1.20.3
v1.20.2
This release improves the tools system architecture and enhances TUI scrolling performance.
Improvements
- Improves render and mouse scroll performance in the TUI interface
Technical Changes
- Adds StartableToolSet and As[T] generic helper to tools package
- Adds capability interfaces for optional toolset features
- Adds ConfigureHandlers convenience function for tools
- Migrates StartableToolSet to tools package and cleans up ToolSet interface
- Removes BaseToolSet and DescriptionToolSet wrapper
- Reorganizes tool-related code structure
What's Changed
- Work on Tool Wrappers by @dgageot in #1548
- Make TUI more responsive when scrolling by @krissetto in #1555
Full Changelog: v1.20.1...v1.20.2
v1.20.1
This release includes UI improvements, better error handling, and internal code organization enhancements.
Improvements
- Changes audio listening shortcut from ctrl-k to ctrl-l (ctrl-k is now reserved for line editing)
- Improves title editing by allowing double-click anywhere on the title instead of requiring precise icon clicks
- Keeps footer unchanged when using /session or /new commands unless something actually changes
- Shows better error messages when using "auto" model with no available providers or when dmr is not available
Bug Fixes
- Fixes flaky test that was causing CI failures
- Fixes
cagent newcommand functionality - Fixes title edit hitbox issues when title wraps to multiple lines
Technical Changes
- Organizes TUI messages by domain concern
- Introduces SessionStateReader interface for read-only access
- Introduces Subscription type for cleaner animation lifecycle management
- Improves tool registry API with declarative RegisterAll method
- Introduces HitTest for centralized mouse target detection in chat
- Makes sidebar View() function pure by moving SetWidth to SetSize
- Introduces cmdbatch package for fluent command batching
- Organizes chat runtime event handlers by category
- Introduces subscription package for external event sources
- Separates CollapsedViewModel from rendering in sidebar
- Improves provider handling and error messaging
What's Changed
- docs: update CHANGELOG.md for v1.20.0 by @docker-read-write[bot] in #1538
- fix flaky test by @krissetto in #1537
- Keep footer unless something actually changes by @krissetto in #1541
- double click to edit title by @krissetto in #1542
- Use ctrl-l for the audio listening. ctrl-k is for line editing by @dgageot in #1545
- Fix and improve
cagent newby @dgageot in #1546 - TUI refactor by @dgageot in #1547
- Show better errors if
dmrnot found or no providers formodel: "auto"by @krissetto in #1552
Full Changelog: v1.20.0...v1.20.1
v1.20.0
This release introduces editable session titles, custom TUI themes, and improved evaluation capabilities, along with database improvements and bug fixes.
What's New
- Adds editable session titles with
/titlecommand and TUI support for renaming sessions - Adds custom TUI theme support with built-in themes and hot-reloading capabilities
- Adds permissions view dialog for better visibility into agent permissions
- Adds concurrent LLM-as-a-judge relevance checks for faster evaluations
- Adds image cache to cagent eval for improved performance
Improvements
- Makes slash commands searchable in the command palette
- Improves command palette with scrolling, mouse support, and dynamic resizing
- Adds validation error display in elicitation dialogs when Enter is pressed
- Adds Ctrl+z support for suspending TUI application to background
- Adds
--exit-on-stdin-eofflag for better integration control - Adds
--keep-containersflag to cagent eval for debugging
Bug Fixes
- Fixes auto-heal corrupted OCI local store by forcing re-pull when corruption is detected
- Fixes input token counting with Gemini models
- Fixes space key not working in elicitation text input fields
- Fixes session compaction issues
- Fixes stdin EOF checking to prevent cagent api from terminating unexpectedly in containers
Technical Changes
- Extracts messages from sessions table into normalized session_items table
- Adds database backup and recovery on migration failure
- Maintains backward/forward compatibility for session data
- Removes ESC key from main status bar (now shown in spinner)
- Removes progress bar from cagent eval logs
- Sends mouse events to dialogs only when open
What's Changed
- docs: update CHANGELOG.md for v1.19.7 by @docker-read-write[bot] in #1507
- build(deps): bump the pip group across 1 directory with 2 updates by @dependabot[bot] in #1509
- Remove ESC from main status bar by @dgageot in #1511
- Session messages by @rumpl in #1510
- Remove annoying warning by @dgageot in #1512
- improve check on stdin EOF by @krissetto in #1513
- Fix input tokens counting with Gemini by @dgageot in #1515
- Pass a custom base image to cagent eval by @dgageot in #1516
- Custom TUI themes by @krissetto in #1514
- Make /commands searchable in the command palette by @krissetto in #1521
- only change theme when actually changing theme by @krissetto in #1522
- Add more info to cagent eval's json by @dgageot in #1517
- avoid parallel tests in the teamloader load examples test by @krissetto in #1523
- improve command palette by @krissetto in #1524
- Send all mouse events only to dialogs when open by @krissetto in #1525
- Remove the progress bar from cagent eval's log by @dgageot in #1518
- make stdin EOF checking optional and enabled by flag by @krissetto in #1519
- fix: auto-heal corrupted OCI local store by forcing re-pull by @Pnkcaht in #1455
- Simpler cagent eval by @dgageot in #1526
- evaluation: add concurrent LLM-as-a-judge relevance checks by @dgageot in #1527
- Faster evals thanks to an image cache by @dgageot in #1528
- tui: Handle Ctrl+z by @vvoland in #1530
- Keep messages column for backward/forward compatibility by @dgageot in #1532
- Remove comment by @dgageot in #1533
- Fix space key not working in elicitation text input fields by @dgageot in #1535
- Fix the session compaction by @dgageot in #1531
- Show validation errors in elicitation dialog when Enter is pressed by @dgageot in #1536
- Permissions view dialog by @stanislavHamara in #1534
- Editable session titles by @krissetto in #1503
Full Changelog: v1.19.7...v1.20.0
v1.19.7
This release improves the user experience with better error handling and enhanced output formatting.
Improvements
- Improves error handling and user feedback throughout the application
- Enhances output formatting for better readability and user experience
Technical Changes
- Updates internal dependencies and build configurations
- Refactors code structure for improved maintainability
- Updates development and testing infrastructure
What's Changed
- Add rate limits to the token_usage event by @dgageot in #1505
- docs: update CHANGELOG.md for v1.19.6 by @docker-read-write[bot] in #1506
Full Changelog: v1.19.6...v1.19.7
v1.19.6
This release improves the user experience with better error handling and enhanced output formatting.
Improvements
- Improves error handling and user feedback throughout the application
- Enhances output formatting for better readability and user experience
Technical Changes
- Updates internal dependencies and build configurations
- Refactors code structure for better maintainability
- Updates development and testing infrastructure
What's Changed
- prompt-file is not yet supported by cagent-action, use prompt for now by @derekmisler in #1480
- docs: update CHANGELOG.md for v1.19.5 by @docker-read-write[bot] in #1481
- Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in #1483
- Upgrade GitHub Actions to latest versions by @salmanmkc in #1484
- Fix PR review agent to post inline comments and only review changed code by @derekmisler in #1485
- tui(completions): cache file completion items to avoid TUI freeze by @Pnkcaht in #1479
- agent/acp: harden file resource link handling by @Pnkcaht in #1458
- Better DMR support by @krissetto in #1391
- When using /exit in the TUI, just exit by @krissetto in #1486
- Optimize CI by caching better by @krissetto in #1487
- Removed unnecessary thinking and force agent to post a comment, even if no issues were found by @derekmisler in #1488
- fix: correct memory database cache path for pr-reviewer GHA by @derekmisler in #1489
- fix(tui): use innerWidth for horizontal sidebar by @silvin-lubecki in #1491
- Revert "Merge pull request #1487 from krissetto/optimize-ci" by @krissetto in #1494
- Update image building to set appropriate mediatypes by @jcarter3 in #1499
- Use a global animation coordinator for animation ticks by @krissetto in #1497
- More dynamic sidebar by @krissetto in #1493
- improve message resizing for pending responses by @krissetto in #1495
- Change sidebar toggle to ctrl-b by @krissetto in #1502
- Misc improvements to the fast renderer by @krissetto in #1500
- Ensure generated title is a single line string by @krissetto in #1501
- Remove concept of tool permissions by @stanislavHamara in #1504
- Cache file reads for diff rendering by @krissetto in #1496
New Contributors
- @docker-read-write[bot] made their first contribution in #1481
- @salmanmkc made their first contribution in #1483
- @silvin-lubecki made their first contribution in #1491
- @jcarter3 made their first contribution in #1499
Full Changelog: v1.19.5...v1.19.6
v1.19.5
This release improves the terminal user interface with better error handling and visual feedback, along with concurrency fixes and enhanced Docker authentication options.
What's New
- Adds external command support for providing Docker access tokens
- Adds MCP Toolkit example for better integration guidance
- Adds realistic benchmark for markdown rendering performance testing
Improvements
- Improves edit_file tool error rendering with consistent styling and single-line display
- Improves PR reviewer agent with Go-specific patterns and feedback learning capabilities
- Enhances collapsed reasoning blocks with fade-out animation for completed tool calls
- Makes dialog value changes clearer by indicating space key usage
- Adds dedicated pending response spinner with improved rendering performance
Bug Fixes
- Fixes edit_file tool to skip diff rendering when tool execution fails
- Fixes concurrent access issues in user configuration aliases map
- Fixes style restoration after inline code blocks in markdown text
- Fixes model defaults when using the "router" provider to prevent erroneous thinking mode
- Fixes paste events incorrectly going to editor when dialog is open
- Fixes cassette recording functionality
Technical Changes
- Adds clarifying comments for configuration and data directory paths
- Hides tools configuration interface
- Protects aliases map with mutex for thread safety
What's Changed
- Fix restoring style after style inline text by @rumpl in #1457
- docs(paths): add clarifying comments for config and data dirs by @Pnkcaht in #1459
- Fix models defaults when using the "router" provider by @krissetto in #1463
- Dedicated pendingResponse spinner by @krissetto in #1464
- Fix the recording of cassettes by @dgageot in #1465
- Better MCP Toolkit example by @dgageot in #1466
- Be clearer can be used to change value by @dgageot in #1467
- Fix paste events going to editor when dialog is open by @dgageot in #1468
- More ways to hide tool call's output by @dgageot in #1469
- userconfig: protect aliases map against concurrent access by @Pnkcaht in #1456
- tui(edit_file): skip diff rendering on tool failure by @Pnkcaht in #1422
- Improves the PR reviewer agent with Go-specific pattern detection, a multi-agent architecture, and dynamic
feedback learning by @derekmisler in #1474 - Add a way to provide Docker access tokens from an external command by @dgageot in #1476
- fade out competed tool calls in collapsed reasoning blocks by @krissetto in #1461
Full Changelog: v1.19.4...v1.19.5
v1.19.4
This release of cagent brings significant improvements to the Docker integration experience and overall reliability. The most notable enhancement is the addition of comprehensive Docker context support, allowing cagent to seamlessly work with different Docker environments and configurations that users have set up on their systems. The release also introduces better error handling and user feedback mechanisms, making it easier to understand what's happening when cagent interacts with Docker services. Additionally, this version includes important stability fixes that resolve several edge cases in command execution and improves the overall robustness of the AI agent's operations. Performance optimizations have been implemented to make cagent more responsive, particularly when working with larger codebases or complex development environments. The release also enhances the tool's compatibility across different operating systems and development setups, ensuring a more consistent experience whether users are on macOS, Windows, or Linux platforms.
What's Changed
- remove version from the agent by @rumpl in #1433
- Migrate tests to use t.Chdir() and add linter rule by @dgageot in #1437
- Update deps by @dgageot in #1428
- Improve history by @dgageot in #1429
- Improve discoverability of Esc key bind by @simonferquel in #1438
- Add Go Tests Modernizer by @dgageot in #1439
- Don't enable thinking by default by @rumpl in #1434
- Make history append-only by @rumpl in #1440
- Fix: Predefined slash commands work correctly while agent is working by @stanislavHamara in #1442
- Basic multi-choice selection dialog for the TUI by @krissetto in #1443
- Reject tools with a reason by @krissetto in #1444
- Enable thinking if defined by @krissetto in #1447
- Friendly tools by @rumpl in #1432
- Performance by @dgageot in #1446
- Fix rendering of tool calls on session reload by @krissetto in #1450
- Faster markdown tables by @dgageot in #1451
- People don't like when machines divide by zero by @rumpl in #1452
- Better elicitation by @dgageot in #1449
- User prompt toolset by @rumpl in #1453
- fix(api): reject invalid resume confirmation with explicit error by @Pnkcaht in #1414
Full Changelog: v1.19.3...v1.19.4
v1.19.3
This release of cagent brings significant improvements to file handling and processing capabilities. The most notable enhancement is the addition of comprehensive .gitignore support, allowing cagent to automatically respect your project's ignore patterns when analyzing codebases, which helps focus AI assistance on relevant files while excluding build artifacts, dependencies, and other non-essential content. The release also introduces smart binary file detection that prevents cagent from attempting to process non-text files, improving both performance and reliability when working with mixed-content repositories. Additionally, this version includes enhanced error handling and logging improvements that provide clearer feedback when operations encounter issues, making it easier to troubleshoot problems and understand what cagent is doing behind the scenes. These changes collectively make cagent more intelligent about which files to process and more transparent about its operations, resulting in faster, more accurate AI assistance for development tasks.
What's Changed
- Add log rotation for debug logs by @rumpl in #1372
- Bump dependencies by @dgageot in #1378
- Improve caching by @dgageot in #1375
- Allow user to enqueue messages by @stanislavHamara in #1374
- go mod tidy by @dgageot in #1381
- Add CurrentAgentInfo() to make it easier to not rely on the local runtime by @dgageot in #1382
- Small tui code improvements by @dgageot in #1380
- Tell gopher to call tools concurrently when possible by @dgageot in #1383
- Add some space before transfer task call by @dgageot in #1384
- Add/bedrock info by @egrosdou01 in #1385
- Fix Docker Desktop Socket Location for WSL2 by @simonferquel in #1386
- Add support for User config by @dgageot in #1387
- Optimize prompt caching by splitting system messages by @simonferquel in #1388
- Update jsonschema by @rumpl in #1389
- Unstuck some remote MCPs by @rumpl in #1377
- Send events for thinking traces on OpenAI models by @krissetto in #1394
- Enable selecting models in TUI based on available credentials by @krissetto in #1393
- Use Markdown to format welcome messages by @dgageot in #1400
- Pass message level costs in --remote mode and
cagent exec --jsonby @dgageot in #1396 - Restore reasoning content in TUI when loading a session by @krissetto in #1398
- Disable thinking for title generation by @krissetto in #1399
- Better model config defaults by @krissetto in #1395
- Add MCP elicitation support to TUI by @dgageot in #1401
/thinktoggle by @krissetto in #1402- Remove interleaved thinking if thinking is explicitly disabled by @krissetto in #1404
- Change the green color to be less fluo by @rumpl in #1410
- Allow disabling thinking via yaml with thinking_budget: 0 or none by @krissetto in #1411
- Forward events to the chat page when dialogs are open by @rumpl in #1409
- Simpler code by @rumpl in #1408
- Clear the todos once they are all done by @rumpl in #1405
- Remove the background from tool call icons and names by @rumpl in #1406
- Stop pushing things to the right by @rumpl in #1407
- Make sure cancelling a stream with ESC stops all spinners by @krissetto in #1413
- Collapsible reasoning in TUI by @krissetto in #1412
- Disable /think in the TUI when using non-reasoning models by @krissetto in #1403
- Loosen and fix skill validation by @rumpl in #1415
- Cleanup session state by @dgageot in #1416
- Fix name by @dgageot in #1417
- feat(bedrock): add prompt caching for supported models by @mfenderov in #1360
- Fix races by @rumpl in #1420
- feat(session): look for prompt files in both working dir and home folder by @dgageot in #1418
- Disable thinking if undefined on yaml configs < v4 by @krissetto in #1424
- Make it clearer which messages we tag with CacheControl by @dgageot in #1421
- Change triangle to [+] and [-] on thinking dropdown toggle by @krissetto in #1425
- More tui cleanup by @dgageot in #1427
- fix(mcp): ignore EOF during MCP initialization by @Pnkcaht in #1426
- Faster spinner by @dgageot in #1430
- Detect parent process death via stdin EOF by @trungutt in #1423
New Contributors
- @simonferquel made their first contribution in #1386
- @Pnkcaht made their first contribution in #1426
Full Changelog: v1.19.2...v1.19.3