Changelog
All notable changes to SQLsaber will be documented here.
Unreleased
Section titled “Unreleased”v0.36.0 - 2025-10-23
Section titled “v0.36.0 - 2025-10-23”saber db excludecommand to manage schema exclusions without re-adding a connection, plus a--exclude-schemasflag when creating connections.- Model name display in both interactive and non-interactive modes alongside database connection information.
Changed
Section titled “Changed”- Schema exclusion configuration now applies to PostgreSQL, MySQL, DuckDB, and CSV connections, combining per-connection settings with environment variables such as
SQLSABER_MYSQL_EXCLUDE_SCHEMASandSQLSABER_DUCKDB_EXCLUDE_SCHEMAS.
- Fixed ID column truncation in
saber threads liston smaller terminal screens by ensuring full UUID visibility.
v0.35.0 - 2025-10-22
Section titled “v0.35.0 - 2025-10-22”- Table and column comment support across all databases
- Comments are now included in schema introspection to provide richer context to LLM
- PostgreSQL: Uses
obj_description()andcol_description()functions - MySQL: Retrieves
table_commentandcolumn_commentfrominformation_schema - DuckDB: Joins with
duckdb_tables()andduckdb_columns()for comment data - SQLite: Returns
Nonefor comments (SQLite doesn’t support native comments) - Comments are conditionally included in tool output only when present, avoiding clutter
- Updated
ColumnInfoandSchemaInfoTypedDicts with optional comment fields
- Strip leading/trailing whitespace and new lines from submitted user inputs
v0.34.0 - 2025-10-17
Section titled “v0.34.0 - 2025-10-17”Changed
Section titled “Changed”- Improved
auth setupcommand: Reworked to select the provider first, offer to reset existing credentials per provider, and allow configuring multiple providers in one session without manual cleanup. - PostgreSQL schema introspection: Exclude TimescaleDB internal schemas by default and add env-based filtering
- Default exclusions now include
pg_catalog,information_schema,_timescaledb_internal,_timescaledb_cache,_timescaledb_config,_timescaledb_catalog - New environment variable
SQLSABER_PG_EXCLUDE_SCHEMASallows excluding additional schemas (comma-separated) - Applies to both
list_tablesandintrospect_schematools
- Default exclusions now include
v0.33.0 - 2025-10-16
Section titled “v0.33.0 - 2025-10-16”Changed
Section titled “Changed”- Improved system prompt for GPT-5 using OpenAI’s prompt optimizer tool
- Improved system prompt for Sonnet 4.5 and others using Anthropic’s prompt improvement tool
- Dedicated prompt for GPT-5
v0.32.1 - 2025-10-15
Section titled “v0.32.1 - 2025-10-15”- Prevented
saber auth setupfrom crashing when launching Anthropic OAuth by moving the browser authentication flow onto a background thread, avoiding nested asyncio event loops.
v0.32.0 - 2025-10-14
Section titled “v0.32.0 - 2025-10-14”- Optional MLflow autologging
- Set
MLFLOW_URIandMLFLOW_EXPbefore runningsqlsaberto forward telemetry viamlflow.pydantic_ai.autolog()with no runtime requirement when the MLflow package is absent.
- Set
v0.31.0 - 2025-10-13
Section titled “v0.31.0 - 2025-10-13”- Structured logging across the project
- Centralized setup with JSON logs to a rotating file by default
- Daily rotation at midnight (configurable), with backups retained
- Optional pretty console output in development via
SQLSABER_LOG_TO_STDERR=1orSQLSABER_DEBUG=1 - Captures stdlib logging and Python warnings into the same pipeline
- Environment variables to control behavior:
SQLSABER_LOG_LEVEL,SQLSABER_LOG_FILE,SQLSABER_LOG_ROTATION,SQLSABER_LOG_WHEN,SQLSABER_LOG_INTERVAL,SQLSABER_LOG_BACKUP_COUNT,SQLSABER_LOG_MAX_BYTES
v0.30.2 - 2025-10-10
Section titled “v0.30.2 - 2025-10-10”Changed
Section titled “Changed”- Added
keyrings.cryptfileas Linux-only dependency for better keyring support on Linux systems
v0.30.1 - 2025-10-07
Section titled “v0.30.1 - 2025-10-07”- Minor styling fixes
v0.30.0 - 2025-10-07
Section titled “v0.30.0 - 2025-10-07”Removed
Section titled “Removed”-
MCP server support and related console scripts (
saber-mcp,sqlsaber-mcp)sqlsabercan still be used as a cli in coding agents like Claude Code, Codex, or Amp.Just ask the coding agent to invoke
sqlsabercli with your question.
v0.29.1 - 2025-10-05
Section titled “v0.29.1 - 2025-10-05”- Fixed
list_tablestool displaying “0 total” when tables exist
v0.29.0 - 2025-10-04
Section titled “v0.29.0 - 2025-10-04”- Theme management commands
saber theme set- Interactively select from all available Pygments themes with searchable listsaber theme reset- Reset to default theme (nord)- Theme configuration persists across sessions
- Environment variable
SQLSABER_THEMEcan override configured theme
Changed
Section titled “Changed”- Theme manager now derives semantic colors directly from selected Pygments styles, enabling out-of-the-box support for any upstream theme while retaining user overrides and fallbacks.
v0.28.0 - 2025-10-03
Section titled “v0.28.0 - 2025-10-03”- Unified theming system
- Easy theme switching via
SQLSABER_THEMEenvironment variable or config file
Changed
Section titled “Changed”- Enhanced read-only query validation using
sqlglotAST analysis- Improved security with comprehensive AST-based detection of write operations
- Blocks dangerous operations in nested queries, CTEs, and subqueries
- Detects dialect-specific dangerous functions (pg_read_file, LOAD_FILE, readfile, etc.)
- Prevents SELECT INTO, SELECT FOR UPDATE/SHARE, and multi-statement queries
- Dialect-aware LIMIT clause injection for Postgres, MySQL, SQLite, and DuckDB
v0.27.0 - 2025-10-01
Section titled “v0.27.0 - 2025-10-01”- Added onboarding flow for new users
- If users don’t have a database set up or model provider API key setup, SQLsaber will guide them through the process interactively in a frictionless and delightful manner.
Changed
Section titled “Changed”- Final thinking blocks now render Markdown
v0.26.0 - 2025-09-30
Section titled “v0.26.0 - 2025-09-30”- Extended thinking/reasoning mode
- Support for Anthropic, OpenAI, Google, and Groq
- CLI flags:
--thinkingand--no-thinkingfor per-query control - Interactive commands:
/thinking onand/thinking offfor runtime toggling - Configurable default via
thinking_enabledin model config - Thinking content displayed with dim styling to distinguish from final answers
This is useful when you want to see the reasoning used to generate the answer or when dealing with complex queries and questions.
v0.25.0 - 2025-09-26
Section titled “v0.25.0 - 2025-09-26”- DuckDB support for efficient CSV and data file analysis
- Added
duckdbprovider to database options - Enhanced CSV processing capabilities using DuckDB’s optimized engine
- Added
v0.24.0 - 2025-09-24
Section titled “v0.24.0 - 2025-09-24”- Index information is now included in
introspect_schematool output alongside columns, primary keys, and foreign keys - Cleaner markdown formatting for thread exports when redirected to files
- Terminal display remains unchanged with rich styling and colors
v0.23.0 - 2025-09-16
Section titled “v0.23.0 - 2025-09-16”- Smoother markdown streaming and prevent duplicate messages
- SQL execution errors now display in interactive sessions instead of being silently dropped
v0.22.0 - 2025-09-15
Section titled “v0.22.0 - 2025-09-15”- Query timeout protection to prevent runaway queries
- 30-second timeout applied to all database operations by default
- Both client-side and server-side timeout enforcement where supported (PostgreSQL, MySQL)
- Per-query timeout override parameter for edge cases
- Automatic rollback of transactions when queries timeout
v0.21.0 - 2025-09-15
Section titled “v0.21.0 - 2025-09-15”Changed
Section titled “Changed”- Use Responses API for OpenAI models
- Stream markdown while streaming response from models
v0.20.0 - 2025-09-10
Section titled “v0.20.0 - 2025-09-10”- Subcommand help visibility for nested apps
- Removed mouse support for user prompt
- Enabling mouse support disables terminal scrolling when user prompt is focused
v0.19.0 - 2025-09-09
Section titled “v0.19.0 - 2025-09-09”- Notable improvements to user prompt interface
- Ctrl+D to exit the application without having to use “/exit” or “/quit” slash command
- Display multiline input submission info as bottom toolbar
- Pressing up and down arrow keys now help navigate through prior user prompts
- Visual improvements to user prompt area
- Added mouse support - users can now click around text to edit
v0.18.0 - 2025-09-08
Section titled “v0.18.0 - 2025-09-08”Changed
Section titled “Changed”- Improved CLI startup time
v0.17.0 - 2025-09-08
Section titled “v0.17.0 - 2025-09-08”- Conversation threads system for storing, displaying, and resuming conversations
- Automatic thread creation for both interactive and non-interactive sessions
saber threads list- List all conversation threads with filtering optionssaber threads show THREAD_ID- Display full transcript of a conversation threadsaber threads resume THREAD_ID- Continue a previous conversation in interactive modesaber threads prune- Clean up old threads based on age- Thread persistence with metadata (title, model, database, last activity)
- Seamless resumption of conversation context and history
Removed
Section titled “Removed”- Removed visualization tools and plotting capabilities
- Removed PlotDataTool and uniplot dependency
- Cleaned up visualization-related code from CLI, registry, and instructions
v0.16.1 - 2025-09-04
Section titled “v0.16.1 - 2025-09-04”- Compile python byte code during installation
- Updated CLI help string
v0.16.0 - 2025-09-04
Section titled “v0.16.0 - 2025-09-04”- Migrated to Pydantic-AI agent runtime with model-agnostic interfaces
- Added multi-provider model support: Anthropic, OpenAI, Google, Groq, Mistral, Cohere, Hugging Face
- Provider registry tests to ensure invariants and alias normalization
Changed
Section titled “Changed”- Reworked agents to use new pydantic-ai-based agent implementation
- Updated CLI modules and settings to integrate provider selection and authentication
saber auth resetnow mirrors setup by prompting for a provider, then selectively removing stored credentials for that provider- Removes API keys from OS credential store for the selected provider
- For Anthropic, also detects and removes OAuth tokens
- Offers optional prompt to unset global auth method when Anthropic OAuth is removed
- Centralized provider definitions in
sqlsaber.config.providersand refactored CLI, config, and agent code to use the registry (single source of truth) - Normalized provider aliases (e.g.,
google-gla→google) for consistent behavior across modules
Removed
Section titled “Removed”- Deprecated custom
clientsmodule and Anthropic-specific client code - Removed legacy streaming and events modules and related tests
v0.15.0 - 2025-08-18
Section titled “v0.15.0 - 2025-08-18”- Tool abstraction system with centralized registry (new
Toolbase class,ToolRegistry, decorators) - Dynamic instruction generation system (
InstructionBuilder) - Comprehensive test suite for the tools module
Changed
Section titled “Changed”- Refactored agents to use centralized tool registry instead of hardcoded tools
- Enhanced MCP server with dynamic tool registration
- Moved core SQL functionality to dedicated tool classes
v0.14.0 - 2025-08-01
Section titled “v0.14.0 - 2025-08-01”- Local conversation storage between user and agent
- Store conversation history persistently
- Track messages with proper attribution
- Added automated test execution in CI
- New GitHub Actions workflow for running tests
- Updated code review workflow
- Fixed CLI commands test suite (#11)
Changed
Section titled “Changed”- Removed schema caching from SchemaManager
- Simplified schema introspection by removing cache logic
- Direct database queries for schema information
v0.13.0 - 2025-07-26
Section titled “v0.13.0 - 2025-07-26”- Database resolver abstraction for unified connection handling
- Extended
-dflag to accept PostgreSQL and MySQL connection strings (e.g.,postgresql://user:pass@host:5432/db) - Support for direct connection strings alongside existing file path and configured database support
- Examples:
saber -d "postgresql://user:pass@host:5432/db" "show users"
- Extended
v0.12.0 - 2025-07-23
Section titled “v0.12.0 - 2025-07-23”- Add support for ad-hoc SQLite files via
--database/-dflag
v0.11.0 - 2025-07-09
Section titled “v0.11.0 - 2025-07-09”Changed
Section titled “Changed”- Removed row counting from
list_tablestool for all database types
v0.10.0 - 2025-07-08
Section titled “v0.10.0 - 2025-07-08”- Support for reading queries from stdin via pipe operator
echo 'show me all users' | sabernow workscat query.txt | saberreads query from file via stdin- Allows integration with other command-line tools and scripts
v0.9.0 - 2025-07-08
Section titled “v0.9.0 - 2025-07-08”Changed
Section titled “Changed”- Migrated from Typer to Cyclopts for CLI framework
- Improved command structure and parameter handling
- Better support for sub-commands and help documentation
- Made interactive mode more ergonomic
sabernow directly starts interactive mode (previouslysaber query)saber "question"executes a single query (previouslysaber query "question")- Removed the
querysubcommand for a cleaner interface
v0.8.2 - 2025-07-08
Section titled “v0.8.2 - 2025-07-08”Changed
Section titled “Changed”- Updated formatting for final answer display
- New ASCII art in interactive mode
v0.8.1 - 2025-07-07
Section titled “v0.8.1 - 2025-07-07”- Fixed OAuth validation logic to not require API key when Claude Pro OAuth is configured
v0.8.0 - 2025-07-07
Section titled “v0.8.0 - 2025-07-07”- OAuth support for Claude Pro/Max subscriptions
- Authentication management with
saber authcommand- Interactive setup for API key or Claude Pro/Max subscription
saber auth setupsaber auth statussaber auth reset- Persistent storage of user authentication preferences
- New
clientsmodule with custom Anthropic API clientAnthropicClientfor direct API communication
Changed
Section titled “Changed”- Enhanced authentication system to support both API keys and OAuth tokens
- Replaced Anthropic SDK with direct API implementation using httpx
- Modernized type annotations throughout the codebase
- Refactored query streaming into smaller, more maintainable functions
v0.7.0 - 2025-07-01
Section titled “v0.7.0 - 2025-07-01”-
Table name autocomplete with ”@” prefix in interactive mode
- Type ”@” followed by table name to get fuzzy matching completions
- Supports schema-aware completions (e.g., “@sample” matches “public.sample”)
-
Rich markdown display for assistant responses
- After streaming completes, the final response is displayed as formatted markdown
v0.6.0 - 2025-06-30
Section titled “v0.6.0 - 2025-06-30”- Slash command autocomplete in interactive mode
- Commands now use slash prefix:
/clear,/exit,/quit - Autocomplete shows when typing
/at the start of a line - Press Tab to select suggestion
- Commands now use slash prefix:
- Query interruption with Ctrl+C in interactive mode
- Press Ctrl+C during query execution to gracefully cancel ongoing operations
- Preserves conversation history up to the interruption point
Changed
Section titled “Changed”- Updated table display for better readability: limit to first 15 columns on wide tables
- Shows warning when columns are truncated
- Interactive commands now require slash prefix (breaking change)
clear→/clearexit→/exitquit→/quit
- Removed default limit of 100. Now model will decide it.
v0.5.0 - 2025-06-27
Section titled “v0.5.0 - 2025-06-27”- Added support for plotting data from query results.
- The agent can decide if plotting will useful and create a plot with query results.
- Small updates to system prompt
v0.4.1 - 2025-06-26
Section titled “v0.4.1 - 2025-06-26”- Show connected database information at the start of a session
- Update welcome message for clarity
v0.4.0 - 2025-06-25
Section titled “v0.4.0 - 2025-06-25”- MCP (Model Context Protocol) server support
saber-mcpconsole script for running MCP server- MCP tools:
get_databases(),list_tables(),introspect_schema(),execute_sql() - Instructions and documentation for configuring MCP clients (Claude Code, etc.)
v0.3.0 - 2025-06-25
Section titled “v0.3.0 - 2025-06-25”- Support for CSV files as a database option:
saber query -d mydata.csv
Changed
Section titled “Changed”- Extracted tools to BaseSQLAgent for better inheritance across SQLAgents
- Fixed getting row counts for SQLite
v0.2.0 - 2025-06-24
Section titled “v0.2.0 - 2025-06-24”- SSL support for database connections during configuration
- Memory feature similar to Claude Code
- Support for SQLite and MySQL databases
- Model configuration (configure, select, set, reset) - Anthropic models only
- Comprehensive database command to securely store multiple database connection info
- API key storage using keyring for security
- Interactive questionary for all user interactions
- Test suite implementation
Changed
Section titled “Changed”- Package renamed from original name to sqlsaber
- Better configuration handling
- Simplified CLI interface
- Refactored query stream function into smaller functions
- Interactive markup cleanup
- Extracted table display functionality
- Refactored and cleaned up codebase structure
- Fixed list_tables tool functionality
- Fixed introspect schema tool
- Fixed minor type checking errors
- Check before adding new database to prevent duplicates
Removed
Section titled “Removed”- Removed write support completely for security
v0.1.0 - 2025-06-19
Section titled “v0.1.0 - 2025-06-19”- First working version of SQLSaber
- Streaming tool response and status messages
- Schema introspection with table listing
- Result row streaming as agent works
- Database connection and query capabilities
- Added publish workflow
- Created documentation and README
- Added CLAUDE.md for development instructions