Skip to content

dolt

v2.0.4 Security

This release includes 3 security fixes for security teams reviewing exposed deployments.

Published 15d Relational Databases
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 3 known CVEs

Topics

agent-memory agent-memory-server ai-agents ai-database data-version-control data-versioning
+14 more
database database-version-control database-versioning decentralized-database git git-database git-for-data git-for-databases git-sql immutable-database mariadb mysql sql version-controlled-database

Affected surfaces

auth rbac

Summary

AI summary

Broad release touches dolt, go-mysql-server, Closed Issues, and https.

Changes in this release

Security High

Audit and enforce branch control checks for dolt procedures that mutate state.

Audit and enforce branch control checks for dolt procedures that mutate state.

Source: granite4.1:30b@2026-05-20-audit

Confidence: low

Security Medium

Audit and test branch control coverage for dolt procedures.

Audit and test branch control coverage for dolt procedures.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Security Medium

Fix branch_control bypass involving session table cache.

Fix branch_control bypass involving session table cache.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Breaking Medium

`DOLT_CHECKOUT('<table>')` now gated with Write permission.

`DOLT_CHECKOUT('<table>')` now gated with Write permission.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Feature Medium

dolt revert now more closely matches git behavior.

dolt revert now more closely matches git behavior.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Feature Medium

Gate dolt_branch_control on writable dolt system tables.

Gate dolt_branch_control on writable dolt system tables.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Bugfix Medium

Fix SchemaTable.Updater panic on direct UPDATE dolt_schemas.

Fix SchemaTable.Updater panic on direct UPDATE dolt_schemas.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Bugfix Medium

Connection Close no longer hangs indefinitely after `CALL DOLT_COMMIT`.

Connection Close no longer hangs indefinitely after `CALL DOLT_COMMIT`.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Bugfix Medium

Overflowing TEXT type now errors instead of silently truncating.

Overflowing TEXT type now errors instead of silently truncating.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Refactor Medium

Replace all `decimal.Decimal` with `*apd.Decimal` in go-mysql-server.

Replace all `decimal.Decimal` with `*apd.Decimal` in go-mysql-server.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Full changelog

Merged PRs

dolt

  • 11073: dolt revert to more closely match git

    Related: https://github.com/dolthub/doltlite/issues/961

  • 11067: proto,go/serial: Bump some bazel version, some module versions.

  • 11059: Fix SchemaTable.Updater panic on direct UPDATE dolt_schemas
    A direct UPDATE dolt_schemas reached SchemaTable.Updater, which panicked with "should never be called" — an unprivileged user could crash the SQL server with it. dolt_schemas is not directly modifiable via SQL, so this returns a clean error unconditionally instead of panicking; adds a regression test.

  • 11058: go: sqle: Fix a dolt_branch_control bypass involving the session table cache.
    On a new connection, a SELECT against information_schema.tables or information_schema.columns would populate the session's table cache is a Table value that embedded a revision-less Database value. An incoming write request against the cached table would run its permissions check against the revision-less database, instead of the revisioned database which correctly encoded the branch the write was running against. This allowed connections to bypass dolt_branch_control, elevating to write permissions on all branches.

  • 11057: Branch_control regression tests for more user-table write shapes
    Adds branch_control regression tests for the user-table write shapes that TestBranchControlBlocks wasn't already pinning; all were already correctly gated, so this is pure regression coverage with no behavior change.

  • 11050: Gate branch_control on writable dolt system tables
    Most writable dolt system tables had no branch_control check, so a read- or merge-permission user could write to them; this gates the user-space tables (dolt_docs/ignore/query_catalog/nonlocal/tests via the shared createWriteableSystemTable helper), dolt_constraint_violations_, dolt_workspace_, and ConflictRootObjectTable with Permissions_Write. dolt_branches/dolt_remotes (already read-only), dolt_branch_control/namespace (own admin gating), and dolt_conflicts_ (already gated) are left as-is; tests cover every writer factory and pin the read-only behavior.

  • 11049: Audit and test branch control coverage for dolt procedures
    Survey of dprocedures/dolt_*.go turned up four procedures with no branch_control check that mutate branch or working-set state. Three of them belong under Permissions_Write:

    • dolt_rebase — mutates the active rebase plan and the working set
    • dolt_stash — push/pop/apply/drop/clear all write through to working state
    • dolt_update_column_tag — schema change committed to the working root
      Gate added at the procedure entry in each.
      dolt_undrop was the fourth — leaving it alone. It restores a dropped database, not a table on the current branch, so the branch-control entry for the current branch isn't a sensible gate. MySQL SUPER already covers it.
      Test side: every other dolt_* procedure now has at least one branch_control assertion.
  • 11047: Gate DOLT_CHECKOUT('<table>') with branch_control Write permission
    dolt_checkout(<table>) was previously ungated, so a user with a read or merge permission on a branch could clear working set changes. This gates dolt_checkout(<table>) while leaving dolt_checkout(<branch>) ungated

go-mysql-server

  • 3551: star expression used in function
  • 3546: Cache context to use for String() methods
    This is a replacement for:
    • https://github.com/dolthub/go-mysql-server/pull/3525
      This accomplishes the same effective goal of passing context in the areas that we previously were not (primarily the String() function, which is load-bearing). The above PR changed the interfaces such that nodes and expressions no longer respected the fmt.Stringer interface. This PR instead caches the context inside of all nodes that need a context in their String() function by providing that context at node creation time. This was a tactic that we were already using before my original context threading PR:
    • https://github.com/dolthub/go-mysql-server/pull/3513
      ...and should therefore be no worse than we were before I embarked on this journey.
      It's worth noting that the information_schema tables do not have a proper context inside of their String() function, as those tables are created when the engine is created, and SQL contexts only exist inside of connections/sessions. For now this doesn't impact anything as the Schema(ctx) methods (which use the context from String()) return a precomputed schema, however there are comments in place that warn about the nil context if those methods are ever modified.
  • 3532: replace all decimal.Decimal with *apd.Decimal

Closed Issues

  • 11066: Connection Close hangs indefinitely when attempting to usthe implicit sql transaction commit of aCALL DOLT_COMMIT`
  • 11046: Overflowing TEXT type does not error and silently truncates, and mysql session variables do not work to make it error.

Security Fixes

  • Gate branch_control on writable dolt system tables preventing unauthorized writes
  • Fix dolt_branch_control bypass via session table cache
  • Gate DOLT_CHECKOUT(' ') with branch_control Write permission

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track dolt

Get notified when new releases ship.

Sign up free

About dolt

Dolt – Git for Data

All releases →

Beta — feedback welcome: [email protected]