Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
753 commits
Select commit Hold shift + click to select a range
882a3cd
docs - bitbucket remote sync (#74772)
jeff-bruemmer May 26, 2026
2368677
Surface upstream body in LLM provider error logs and messages (#74359)
crisptrutski May 26, 2026
a734e25
Use database select in workspace database form (#74791)
ranquild May 26, 2026
dc2218a
fix: simplify e2e ai usage tests (#74673)
undrfined May 26, 2026
bc5e227
Require only transform read permissions to run a transform (#74788)
ranquild May 26, 2026
006ad73
feat: add last calculated date to data complexity (#74535)
undrfined May 26, 2026
565cccc
Unify Custom homepage and Landing page into a single Homepage radio (…
AndreyChernykh May 26, 2026
6f738a5
Enable cljfmt `:remove-blank-lines-in-forms?` (#74784)
camsaul May 26, 2026
bfbf174
Auto-update documentation for master (#74801)
github-automation-metabase May 26, 2026
6cc99e6
Warn on large tests with several distinct testing blocks (#74802)
camsaul May 26, 2026
24a5dc8
Sanitize workspace creation sql exception messages (#74657)
dpsutton May 27, 2026
da74a84
Fix schema selection in workspace forms (#74811)
ranquild May 27, 2026
e2786c6
add recent graphy features analytics tracking (#74800)
alxnddr May 27, 2026
52c81f3
Fix ChatGPT and Cursor dark theme override for MCP Apps (#74739)
heypoom May 27, 2026
deddaa0
Add CSP configuration to make images load in MCP Apps (#74741)
heypoom May 27, 2026
7020531
Fix ChatGPT drill-through render by giving render_drill_through its o…
sanex3339 May 27, 2026
656c4e9
Fix misalignment in horizontal Schedule when "Custom" is selected (#7…
olehk-mb May 27, 2026
2aabe33
test: fix assertion in new database modal (#74821)
uladzimirdev May 27, 2026
3d893c1
Rename MCP UI viz scope for metabot consistency (#74820)
crisptrutski May 27, 2026
b94b50a
Gdgt 2495 workaround unsafe eval near membrane requirement (#74717)
chodorowicz May 27, 2026
fd504cf
Add overflow-wrap to tooltip content globally (#74625)
npfitz May 27, 2026
ef354ac
Upgrade package manager actions (#74824)
nemanjaglumac May 27, 2026
16ba5f7
Disallow brushing charts with an aggregated x axis (#74646)
npfitz May 27, 2026
0fd4680
Fix typo in aws-credentials action version (#74826)
nemanjaglumac May 27, 2026
2520cb4
Bound pr-str when logging LLM errors (#74796)
crisptrutski May 27, 2026
aa97118
Don't strip values from impersonation validation (#74440)
rileythomp May 27, 2026
ae19823
Remove worktrunk config from git (#74838)
crisptrutski May 27, 2026
ecdb062
docs - you no longer have to be store admin (#74837)
alexyarosh May 27, 2026
8ca87a3
Make default embedding service base url match AI service (#74756)
lbrdnk May 27, 2026
94757c0
Handle nil subtotal nodes (#74605)
metamben May 27, 2026
00e329c
Report synchronous bigquery errors as client errors (#74684)
metamben May 27, 2026
1203790
Pass column settings when formatting pivot column headers (#74628)
npfitz May 27, 2026
7b466c9
Add clj-surgeon config (#74855)
escherize May 27, 2026
aa84834
Upgrade various GitHub actions (#74850)
nemanjaglumac May 27, 2026
601be9c
GHY-3686 Add stub databases (#74789)
ericnormand May 27, 2026
520fece
feat: Move Caching tab into the overflow menu (UXW-4236) (#74563)
AndreyChernykh May 27, 2026
67745bd
docs - adds dedicated AI privacy page (#74669)
jeff-bruemmer May 27, 2026
29d703e
MCP: read_resource, write tools, execute_sql (#74458)
escherize May 27, 2026
f6bf515
GHY-3687 Handle is_sample database (#74839)
ericnormand May 27, 2026
bae37c4
Move setIsNativeEditorOpen into shared (#74807)
fraserdrops May 27, 2026
aabdd5c
Auto-update documentation for master (#74874)
github-automation-metabase May 27, 2026
d29198d
Auto-add issues only to open milestones (#74871)
iethree May 27, 2026
0537620
Fix Redshift iso-user leak in test cleanup (#74867)
escherize May 27, 2026
ce339df
Update translations 2026-05-26 (#74744)
github-automation-metabase May 27, 2026
a0f8e76
Hide feedback buttons for MCP Apps when not on cloud (#74742)
heypoom May 28, 2026
d4d8c53
Use existing commit for cljfmt (#74885)
romeovs May 28, 2026
5325f24
Remove Question entity (#74652)
romeovs May 28, 2026
52bd3be
Only re-validate incremental checkpoint field when source changes (#7…
qnkhuat May 28, 2026
07ba1d3
test: cleanup jest warnings from query_builder folder (#74640)
uladzimirdev May 28, 2026
ccef44c
Move NoDatabasesEmptyState into common (#74813)
fraserdrops May 28, 2026
fabf312
Log resolved email recipients when sending an email (#74816)
qnkhuat May 28, 2026
84cfb80
Update test to reflect label change (#74906)
lorem--ipsum May 28, 2026
0fe9d30
Distinguish empty Metabot prompt regeneration from errors (#74406)
crisptrutski May 28, 2026
900e1ab
Fix embedModalEnableEmbedding race with pending React remount (#74815)
lorem--ipsum May 28, 2026
72eb2f9
[perms] Fix N+1 query in sandboxing when updating perms (#74734)
bshepherdson May 28, 2026
ef186e4
Fix cljfmt formatting (#74892)
romeovs May 28, 2026
db65e87
Workspace setup entry point from zero state (#74887)
ranquild May 28, 2026
dd9d119
GHY-3701 force let-user-control-scheduling false in workspace config …
ericnormand May 28, 2026
4e0dfc2
bump qs (#74898)
WiNloSt May 28, 2026
f6de634
check pg grant statements rights (#74909)
ranquild May 28, 2026
ef1d510
Do not return MCP Apps tools for clients without UI capability (#74743)
heypoom May 28, 2026
dca533b
Fix Field Filter when there are no search results (#74832)
npfitz May 28, 2026
b4ebd35
Test connection button for Remote Sync (#74665)
npfitz May 28, 2026
6954909
deps: use safe version of js-cookie (#74778)
uladzimirdev May 28, 2026
9382445
Reduce and converge Metabot system prompts on objective-based style (…
retro May 28, 2026
b355eb2
Gate workspace config section on :workspaces feature (#74864)
galdre May 28, 2026
7fa844b
Revert formatting-breaking commits (#74921)
camsaul May 28, 2026
d4238ab
BOT-1524 Save tables used in a metabot conversation (#74254)
appleby May 28, 2026
ed8e23b
Move Explore button into the chart card (UXW-4237) (#74810)
AndreyChernykh May 28, 2026
0726c32
Check for VolumeOperationAllowedLocalPaths connecting to databricks. …
technomancy May 28, 2026
0b269fb
Merge misplaced trailing options-map on fixed-arity MBQL clauses (#74…
retro May 28, 2026
0a5e7ee
Decouple ObjectDetail from QB (#72845)
fraserdrops May 29, 2026
48446fa
Replace cancelDeferred with AbortSignal and honor the signal everywhe…
romeovs May 29, 2026
74494af
[GDGT-2079] add observability to transform timeout system (#73539)
metatyb May 29, 2026
c63b8ad
Fix stacked chart total labels for combo charts (#74247)
andsalves May 29, 2026
ba93b7e
Replace `raw` option with `:tag*` URL template syntax (#74891)
romeovs May 29, 2026
2b88cdb
Convert the `onResponseError` to use EventEmitter event on API client…
romeovs May 29, 2026
482d1db
Fix Sankey click data for extra columns (#74283)
andsalves May 29, 2026
982040a
Reclassify schema as shared tier (#74946)
fraserdrops May 29, 2026
6061e2f
Fix DatePicker css import (#74947)
fraserdrops May 29, 2026
1d39f46
Metics Homepage: Right side panel (UXW-4238) (#74809)
AndreyChernykh May 29, 2026
44c2c83
[GDGT-2078] add observability to transform cancelations (#73157)
metatyb May 29, 2026
e74ebaa
chore: drop deprecated ButtonGroup (#74904)
uladzimirdev May 29, 2026
01c4964
test: cleanup jest warnings from querying folder (#74753)
uladzimirdev May 29, 2026
7e79fbb
Select schema if it is missing (#74586)
romeovs May 29, 2026
f3d99fc
Fix flaky guest-embed happy path checkbox visibility (#74952)
lorem--ipsum May 29, 2026
d587fb7
Boost library-collection items in search ranking (#74806)
crisptrutski May 29, 2026
2ed4929
Remove entity framework 🎈 (#74896)
romeovs May 29, 2026
3ca8008
Auto-update documentation for master (#74942)
github-automation-metabase May 29, 2026
54a770c
Return empty body as null instead of the empty string (#74895)
romeovs May 29, 2026
c3f9cac
Return 204 No Content from CSV append/replace endpoints (#74945)
romeovs May 29, 2026
dc017f7
Don't email admin users who haven't accepted invite (#74883)
galdre May 29, 2026
e50a365
Fix pivot setting comparison when migrating from refs (#74972)
ranquild May 29, 2026
0b10c75
GDGT-1582: Schema Viewer (Entity Relationship Diagram) (#71351)
stasgavrylov May 29, 2026
51df60f
Add --attempt option to mage ci-report (#74975)
bgrabow May 29, 2026
680c6ec
Lock config-managed workspaces against runtime edits (#74929)
galdre May 29, 2026
fb4d33b
Fix auto-release rewinding to an older commit (#74768)
nemanjaglumac May 29, 2026
94f3c63
GHY-3266 cancel slow data-warehouse queries via *canceled-chan* timer…
ericnormand May 29, 2026
41d9fa5
Harden tests against XHR vs fetch timing differences (#74897)
romeovs May 29, 2026
b6fe714
Fix deletion of tenant collections (#74536)
romeovs May 29, 2026
761a852
Admin page for managing notifications and alerts (#72909)
qnkhuat May 29, 2026
7cf846f
GHY-3728 Strip transient lib markers from serdes MBQL export (#74980)
ericnormand May 29, 2026
706edec
GHY-3372 Update parameter values_source_config.card_id during source …
ericnormand May 29, 2026
8fa3fa5
Improve workspace error messages (#74944)
ranquild May 29, 2026
f5d44c0
[match] Use metabase.util.match macros directly instead of driver-api…
alexander-yakushev May 31, 2026
bcac564
[perf] Implement efficient insertion in add-pivot-grouping (#74325)
alexander-yakushev May 31, 2026
8be8d22
Seed suggested prompts for each enabled built-in Metabot (#74951)
crisptrutski May 31, 2026
102682e
restrict CSP for img (#74347)
chodorowicz Jun 1, 2026
837cce9
[perf] Optimize metabase.search.spec for wide tables (#74706)
alexander-yakushev Jun 1, 2026
6bdfe92
Table API field order shape (#74890)
romeovs Jun 1, 2026
5ef9224
Remove requests reducer (#74994)
romeovs Jun 1, 2026
d5d356d
Fix agent portable-FK resolution when two tables share a name across …
retro Jun 1, 2026
a7254d7
Harden e2e tests against timing flakiness (#75004)
romeovs Jun 1, 2026
8562bc7
Use AbortError to signal request cancellation (#75001)
romeovs Jun 1, 2026
0750570
Use RTK hook for settings in AppThemeProvider (#75013)
romeovs Jun 1, 2026
eb6901f
Refactor NativeQueryEditor to be more composable (#75014)
romeovs Jun 1, 2026
f2f40a7
Partial rollout of JUnit hook-failure rewriting for select e2e specs …
olehk-mb Jun 1, 2026
323dca5
Entity copy form (#75002)
romeovs Jun 1, 2026
bb34d6b
match Viz and dashcard radius (#74843)
npfitz Jun 1, 2026
4cccd29
chore: replace getAssetUrl with inline images (#74960)
uladzimirdev Jun 1, 2026
903a9a1
Auto-update documentation for master (#74991)
github-automation-metabase Jun 1, 2026
ac5737c
Prevent writing queries failing the schema checks in the DB (#74884)
metamben Jun 1, 2026
a05cff3
[chore] Update E2E test timings with recent data (#75006)
metabase-bot[bot] Jun 1, 2026
75e8f18
Short-circut permission group membership queries when there is no use…
nvoxland Jun 1, 2026
33beb18
Add missing honeysql util methods for mbql5 drivers (#75024)
rileythomp Jun 1, 2026
b36890c
Cut release-x.62.x branch
invalid-email-address Jun 1, 2026
a7174d6
🤖 backported "Replace caching strategy picker radios with a dropdown"…
github-automation-metabase Jun 1, 2026
a50927b
🤖 backported "Increase timeout for Eastwood test job to 45 minutes" (…
github-automation-metabase Jun 1, 2026
a78a9eb
🤖 backported "deps(custom-viz): use safe version of vite" (#75055)
github-automation-metabase Jun 1, 2026
f6393f7
🤖 backported "Stop using temporary fork of cljfmt" (#75065)
github-automation-metabase Jun 2, 2026
1da70ac
Manual Backport "GDGT-2515: Fix FK field name crop in Schema Viewer i…
stasgavrylov Jun 2, 2026
0bef19f
🤖 backported "[GDGT-2421] field metadata sandboxing" (#75086)
github-automation-metabase Jun 2, 2026
1e97011
🤖 backported "Gdgt 2429 unsaved changes warning does not work while s…
github-automation-metabase Jun 2, 2026
840b9ea
🤖 backported "GDGT-2516 add snowplow events to the Alerts Management …
github-automation-metabase Jun 2, 2026
c2c373d
🤖 backported "GDGT-2213 Update incremental transform label to "Only p…
github-automation-metabase Jun 2, 2026
50c45ad
🤖 backported "GDGT-2519: Surface hidden tables in Schema Viewer ERD" …
github-automation-metabase Jun 2, 2026
77db068
🤖 backported "Improve fingerprint performance" (#75140)
github-automation-metabase Jun 2, 2026
c69905a
🤖 backported "Token scanner: skip image/archive/binary files" (#75148)
github-automation-metabase Jun 2, 2026
4532e3b
🤖 backported "Fix legacy Library entity ID migration collisions" (#75…
github-automation-metabase Jun 2, 2026
510839d
🤖 backported "fix: use any-transform-enable to gate transform hydrati…
github-automation-metabase Jun 3, 2026
9e6d98e
🤖 backported "Fix MCP OAuth discovery behind a TLS-terminating proxy"…
github-automation-metabase Jun 3, 2026
aceebfe
🤖 backported "fix: only show trial warning banner when 7 or fewer day…
github-automation-metabase Jun 3, 2026
a4bc037
🤖 backported "Improve error messages for unsupported H2 functions" (#…
github-automation-metabase Jun 3, 2026
1ae243f
🤖 backported "Default appdb checkoutTimeout to 30s" (#75200)
github-automation-metabase Jun 3, 2026
925239c
🤖 backported "Add url to create dashboard and create question tool" (…
github-automation-metabase Jun 4, 2026
ccbf4fc
chore: prepare SDK release workflow for 62 beta (#75231)
WiNloSt Jun 4, 2026
0c88f05
🤖 backported "Fix flaky caching test in data studio metrics e2e " (#7…
github-automation-metabase Jun 4, 2026
da29615
docs(sdk): Update SDK version to 0.62.0-beta.0 (#75235)
github-automation-metabase Jun 4, 2026
7191988
🤖 backported "fix: retry message on gsheets transient failure" (#75244)
github-automation-metabase Jun 4, 2026
a66fc37
🤖 backported "docs: update metabase store UI paths" (#75271)
github-automation-metabase Jun 4, 2026
dabaf6c
🤖 backported "docs: add drill-through page" (#75269)
github-automation-metabase Jun 4, 2026
59b205e
🤖 backported "docs: update homepage settings" (#75273)
github-automation-metabase Jun 4, 2026
5293f5f
🤖 backported "[GDGT-2503] add sorting by duration to transform runs l…
github-automation-metabase Jun 4, 2026
de9d71a
🤖 backported "GDGT-2365 fix z-index in PythonEditor" (#75277)
github-automation-metabase Jun 4, 2026
074e59c
🤖 backported "docs - CLI page and revisions on agent-driven workflow"…
github-automation-metabase Jun 4, 2026
47a0ba1
🤖 backported "GHY-3804 require superuser for remote-sync current-task…
github-automation-metabase Jun 4, 2026
2a1ab6a
Mark legacy Druid driver as deprecated (#75142)
camsaul Jun 4, 2026
18944fe
Fix metabot self-test app-db init flake (app-db tests) (#75294)
egorgrushin Jun 5, 2026
2a23f22
🤖 backported "Use unicode regex for bigquery alias" (#75296)
github-automation-metabase Jun 5, 2026
e8850d2
🤖 backported "GDGT-2558 move alerts management from EE to OSS" (#75262)
github-automation-metabase Jun 5, 2026
d7877e5
🤖 backported "Optimize temporal expressions the same as filters" (#75…
github-automation-metabase Jun 5, 2026
e128925
🤖 backported "chore: use shared constant to set empty cell placeholde…
github-automation-metabase Jun 5, 2026
34c17c3
🤖 backported "GDGT-304: Fix unthreadsafe number parsing in csv upload…
github-automation-metabase Jun 5, 2026
a017774
🤖 backported "Alerts management: failing tab includes abandoned + que…
github-automation-metabase Jun 5, 2026
ef2a46a
🤖 backported "Remove Our Analytics from library snippet header" (#75307)
github-automation-metabase Jun 5, 2026
b919261
🤖 backported "allow collection creation when publishing tables" (#75308)
github-automation-metabase Jun 5, 2026
5e86ecf
🤖 backported "Add Prometheus metric for search result counts" (#75316)
github-automation-metabase Jun 5, 2026
a1f9525
🤖 backported "GHY-3801 preserve result_metadata for native cards on s…
github-automation-metabase Jun 5, 2026
ee54ea8
🤖 backported "fix: pin commons-configuration2 2.15.1 in Databricks dr…
github-automation-metabase Jun 5, 2026
3f4314e
🤖 backported "fix: pin netty 4.1.135.Final in Snowflake driver" (#75313)
github-automation-metabase Jun 5, 2026
c12d202
🤖 backported "GHY-3802 capture extract-phase logs in serialization ex…
github-automation-metabase Jun 5, 2026
bcf0a13
🤖 backported "feat: add embedding-sdk-tag-latest workflow for npm dis…
github-automation-metabase Jun 5, 2026
73b03fa
🤖 backported "Enable all admin users to activate trial up to pro" (#7…
github-automation-metabase Jun 5, 2026
3dfd0af
🤖 backported "GHY-3805: Make check-card dependency response order det…
github-automation-metabase Jun 5, 2026
96bf181
🤖 backported "Fix zoom in drill for auto binned lat/lon" (#75340)
github-automation-metabase Jun 5, 2026
8eff56d
🤖 backported "docs - custom viz" (#75349)
github-automation-metabase Jun 5, 2026
d12130a
🤖 backported "Remove failed bigquery fix attempt" (#75354)
github-automation-metabase Jun 5, 2026
a937383
🤖 backported "Clean table urls" (#75232)
github-automation-metabase Jun 7, 2026
89b322a
🤖 backported "Fix XLSX exports dropping the currency symbol for non-c…
github-automation-metabase Jun 8, 2026
bf16b36
🤖 backported "Allow editing MySQL tables when partial_revokes is enab…
github-automation-metabase Jun 8, 2026
785b11c
🤖 backported "Added new `strong-enough` password type" (#75243)
github-automation-metabase Jun 8, 2026
c7eac26
🤖 backported "Relax schema in security center" (#75389)
github-automation-metabase Jun 8, 2026
7823e55
🤖 backported "sandbox custom react components" (#75383)
github-automation-metabase Jun 8, 2026
1ec7663
🤖 backported "Run the Data Complexity Score job weekly instead of dai…
github-automation-metabase Jun 8, 2026
9161c56
🤖 backported "docs - parameter dropdown labels" (#75409)
github-automation-metabase Jun 8, 2026
9451210
🤖 backported "Set oauth dynamic registration to false when MCP is dis…
github-automation-metabase Jun 8, 2026
5192f94
🤖 backported "Fix /api/database/:id/schemas when tables have a NULL s…
github-automation-metabase Jun 8, 2026
b2a8981
🤖 backported "Filter out stub databases" (#75426)
github-automation-metabase Jun 8, 2026
9b8bf6c
🤖 backported "Fix flaky homepage x-ray save test" (#75436)
github-automation-metabase Jun 8, 2026
c46fde4
🤖 backported "Honor report-timezone in native field filters" (#75439)
github-automation-metabase Jun 8, 2026
fa189b1
🤖 backported "Fix password-disable when using OIDC" (#75440)
github-automation-metabase Jun 8, 2026
f51f324
🤖 backported "Make defaulted defendpoint params Optional in OpenAPI" …
github-automation-metabase Jun 8, 2026
2cfde45
🤖 backported "Make workspace db updates in a transaction" (#75445)
github-automation-metabase Jun 8, 2026
1a35eb0
🤖 backported "Hide collection CTA if user doesn't have publish permis…
github-automation-metabase Jun 9, 2026
c1301fe
🤖 backported "Send expandedIds when clicking on a table collection in…
github-automation-metabase Jun 9, 2026
ab054e8
🤖 backported "Fix broken parameters api snippets" (#75477)
github-automation-metabase Jun 9, 2026
9441f47
🤖 backported "Fix formatDurationLong rounding at unit boundaries" (#7…
github-automation-metabase Jun 9, 2026
7a61fc2
🤖 backported "Fix flaky test: warn about unsaved changes when navigat…
github-automation-metabase Jun 9, 2026
f74649d
🤖 Backport MCP canonical-URL aliases to v62 (#75025) (#75493)
crisptrutski Jun 9, 2026
cf00fbd
🤖 backported "add admin transforms redirect routes" (#75508)
github-automation-metabase Jun 9, 2026
ce0ec71
🤖 backported "Missed spots with deprecating /mcp route" (#75515)
github-automation-metabase Jun 9, 2026
1596fa0
🤖 backported "Report where MCP saves questions; default to personal c…
github-automation-metabase Jun 9, 2026
d40cbff
🤖 backported "Support query_handle consistently across MCP tools" (#7…
github-automation-metabase Jun 9, 2026
7077297
🤖 backported "Uxw 4224 simplify actions and tabs in table details sid…
github-automation-metabase Jun 9, 2026
82a9c94
[62] Stop logging invalid template tag params (#75534)
ranquild Jun 9, 2026
f7c521d
[62] Fix regexp QP perf issue (#75554)
ranquild Jun 9, 2026
575f27d
🤖 backported "Show value preview for metrics defined on a model" (#75…
github-automation-metabase Jun 9, 2026
d9717c9
Auto-update documentation for release-x.62.x (#75575)
github-automation-metabase Jun 10, 2026
c4be573
🤖 backported "On-demand skills system for Metabot" (#75559)
github-automation-metabase Jun 10, 2026
51b3c62
chore: after gold SDK release checklist on release-x.62.x (#75488)
WiNloSt Jun 10, 2026
66ec74e
docs(sdk): Update SDK version to 0.62.0 (#75589)
github-automation-metabase Jun 10, 2026
8d88b23
🤖 backported "docs: update the link to custom viz docs" (#75606)
github-automation-metabase Jun 10, 2026
eb0c9b3
🤖 backported "Look up load_skill ids by string instead of keywordizin…
github-automation-metabase Jun 10, 2026
247eb4b
🤖 backported "docs: mcp updates" (#75620)
github-automation-metabase Jun 10, 2026
87f98c2
🤖 backported "Further MCP improvements for HTTPS detection" (#75633)
github-automation-metabase Jun 10, 2026
b4bf818
🤖 backported "docs: alert management" (#75657)
github-automation-metabase Jun 10, 2026
ead973e
🤖 backported "DOC - fixing 2 incorrect links and adding a line about …
github-automation-metabase Jun 10, 2026
dd8bab5
🤖 backported "Fix metric viewer for metrics based on native sql cards…
github-automation-metabase Jun 10, 2026
2648955
🤖 backported "Count webhook channels in alert management" (#75626)
github-automation-metabase Jun 10, 2026
957fcb4
🤖 backported "Fix timeline events intermittently not rendered" (#75605)
github-automation-metabase Jun 11, 2026
4effabd
🤖 backported "Fix flaky schema-viewer writable-Postgres test" (#75642)
github-automation-metabase Jun 11, 2026
0ee1002
🤖 backported "Fix MySQL/MariaDB collation mismatch failure in v62 leg…
github-automation-metabase Jun 11, 2026
fec5952
🤖 backported "Fix replacement with field filter alias" (#75708)
github-automation-metabase Jun 11, 2026
c5df553
🤖 backported "Tidy query preprocessing, dataset streaming, and permis…
github-automation-metabase Jun 11, 2026
83aa6a2
🤖 backported "Add JVM hardware info to diagnostic details" (#75724)
github-automation-metabase Jun 11, 2026
56211f6
🤖 backported "Fix Athena sync failing on partitioned Iceberg tables" …
github-automation-metabase Jun 11, 2026
62cbb35
🤖 backported "Return nested fields from sandboxed queries" (#75739)
github-automation-metabase Jun 11, 2026
b4bf990
🤖 backported "Fix filter not respected when downloading visualizer-af…
github-automation-metabase Jun 11, 2026
111c919
🤖 backported "Fall back on effective-type for time fields" (#75759)
github-automation-metabase Jun 11, 2026
fcd4fb4
🤖 backported "GDGT-2233: Match colliding upload columns by display na…
github-automation-metabase Jun 12, 2026
fa33aac
🤖 backported "GDGT-2598: Schema Viewer shows the database name for sc…
github-automation-metabase Jun 12, 2026
a1e5ef3
🤖 backported "GDGT-2597 Order Schema Viewer fields to match the table…
github-automation-metabase Jun 12, 2026
5e0419b
🤖 backported "Fix: `core.async/timeout` combined with `core.async/go`…
github-automation-metabase Jun 12, 2026
e725f9d
🤖 backported "[BOT-1685] Fix UX of Metabot inline SQL search" (#75800)
github-automation-metabase Jun 12, 2026
cd3eb30
🤖 backported "docs: update session expiration page." (#75812)
github-automation-metabase Jun 12, 2026
a23f9f3
🤖 backported "Show clearer permission state on inaccessible metric pa…
github-automation-metabase Jun 12, 2026
ed23135
🤖 backported "GDGT-2617 Hide Security Center setup prompt from non-ad…
github-automation-metabase Jun 12, 2026
29165ee
🤖 backported "Improve app db connection pool usage with public dashbo…
github-automation-metabase Jun 12, 2026
30405ff
🤖 backported "Fix flaky with-query-execution! test helper delivering …
github-automation-metabase Jun 13, 2026
8749432
🤖 backported "Fix history.back 404 when Metabase is under a sub-path …
github-automation-metabase Jun 15, 2026
80b6bea
🤖 backported "Fix Guest embed options staying disabled until SSO term…
github-automation-metabase Jun 15, 2026
4c7e7f5
🤖 backported "docs: erd" (#75878)
github-automation-metabase Jun 15, 2026
fc73b47
🤖 backported "docs: collections in the library" (#75882)
github-automation-metabase Jun 15, 2026
06a9bc9
🤖 backported "Add admin endpoints for OAuth clients and tokens" (#75886)
github-automation-metabase Jun 15, 2026
b16a753
🤖 backported "DOC-fix bug in keycloak page + minor improvements" (#75…
github-automation-metabase Jun 15, 2026
a3208ec
🤖 backported "deleted database handling for transforms" (#75851)
github-automation-metabase Jun 16, 2026
54257d1
Auto-update documentation for release-x.62.x (#75911)
github-automation-metabase Jun 16, 2026
acf7aac
🤖 backported "Handle null timestamps for druid" (#75945)
github-automation-metabase Jun 16, 2026
fd77eb3
🤖 backported "Add missing dimensions in underlying-records drill-thru…
github-automation-metabase Jun 16, 2026
e001eab
Sync to upstream v0.62.2 (conflicts — resolve before merging)
github-actions[bot] Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
111 changes: 111 additions & 0 deletions .claude/agents/ai-backend-expert.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
name: ai-backend-expert
description: "Use this agent for Metabase Clojure backend work on AI features — Metabot, LLM integrations, tool calling, context engineering, the agent API, SQL generation/fixing, entity analysis, or dashboard/question description generation. This includes building or modifying Metabot tools, optimizing context selection for LLM calls, debugging tool calling behavior, working with the Anthropic API integration, managing conversation state, or implementing new AI-powered features.\n\nExamples:\n\n- user: \"Metabot is generating SQL that misunderstands column semantics\"\n assistant: \"Let me use the ai-backend-expert agent to improve the table metadata context to include semantic annotations and sample values.\"\n <commentary>LLM context quality for SQL generation. Use the ai-backend-expert agent.</commentary>\n\n- user: \"We need to add a new Metabot tool for creating filters\"\n assistant: \"Let me use the ai-backend-expert agent to implement the tool using the deftool macro with proper schema, permissions, and LLM-friendly descriptions.\"\n <commentary>Metabot tool implementation. Use the ai-backend-expert agent.</commentary>\n\n- user: \"Context window is overflowing for tables with 200+ columns\"\n assistant: \"Let me use the ai-backend-expert agent to build relevance-aware context selection that prioritizes fields based on the query.\"\n <commentary>Context engineering and token management. Use the ai-backend-expert agent.</commentary>\n\n- user: \"The LLM is calling the wrong tool or providing malformed parameters\"\n assistant: \"Let me use the ai-backend-expert agent to implement validation, error recovery, and retry logic for tool calls.\"\n <commentary>Tool calling reliability. Use the ai-backend-expert agent.</commentary>\n\n- user: \"We need to expose Metabase capabilities as tools for external AI agents\"\n assistant: \"Let me use the ai-backend-expert agent to work on the agent API endpoint design.\"\n <commentary>Agent API for external tool use. Use the ai-backend-expert agent.</commentary>"
model: opus
memory: project
---

You are a senior backend engineer with deep expertise in Metabase's AI features — Metabot, LLM integrations, tool calling, and context engineering. You understand both the Clojure backend and the LLM application architecture patterns needed to build reliable, production-quality AI features.

You handle one self-contained question or implementation at a time. If a task spans many dependent steps, do the discrete piece you were called for and return a structured summary so the orchestrator can drive the next step. Subagents drift on long, evolving work — keep your scope tight.

## Your Domain Knowledge

### Metabot (Enterprise)

The Metabot conversational agent lives at `enterprise/backend/src/metabase_enterprise/metabot/`. Treat the directory as the source of truth — the file inventory shifts as the product evolves; explore before assuming. The structure typically includes:

- `api.clj` and `api/` — HTTP endpoints for conversations, prompts, tool execution
- `models/` and supporting files — conversation, message, and prompt persistence
- `tools/` — individual Metabot tools (each tool a small namespace defining its schema, permissions, and implementation)
- `permissions.clj` — permission gating for Metabot's actions
- `settings.clj` — feature flags, model selection, token budgets
- `usage.clj` — usage tracking and quotas

To enumerate the current tool set, list `tools/` rather than relying on a memorized list — it changes.

### LLM Integration (OSS)

`src/metabase/llm/` houses the LLM-facing layer shared across features: API endpoints, the Anthropic client, schema/metadata context generation, and shared settings.

### Agent API (OSS)

`src/metabase/agent_api/` exposes Metabase capabilities as tools for external AI agents — third-party LLM applications can query, explore schemas, and generate visualizations. Keep `reference.md` in sync when extending the surface.

### AI-Powered Features

Beyond the conversational Metabot, Metabase has narrower LLM-backed features (entity analysis, SQL fix suggestions, NL-to-SQL, auto descriptions). They evolve as separate small modules — search the codebase for `ai_*` and similar names under `src/metabase/` and `enterprise/backend/src/metabase_enterprise/` rather than expecting a fixed inventory.

## Key Codebase Locations

- `enterprise/backend/src/metabase_enterprise/metabot/` — Metabot core (api, models, tools, permissions)
- `enterprise/backend/src/metabase_enterprise/metabot/tools/` — individual Metabot tools
- `src/metabase/agent_api/` — external-agent API surface
- `src/metabase/llm/` — OSS LLM layer (API, Anthropic client, context, task wrappers)
- `enterprise/backend/src/metabase_enterprise/` — enterprise AI features (search by `ai_*` or task-specific module names; layout evolves)

When investigating, start by listing the relevant directory; don't assume the per-file layout matches an older description.

## How You Work

### Investigation Approach

1. **Check context quality first.** Most LLM quality issues trace back to context — what metadata is the LLM seeing? Is it sufficient, accurate, and well-structured?

2. **Inspect tool schemas.** Tool descriptions and parameter schemas are part of the prompt. Ambiguous tool descriptions cause wrong tool selection. Vague parameter schemas cause malformed calls.

3. **Trace the conversation loop.** User message → context assembly → LLM call → tool call extraction → tool execution → result packaging → next LLM call. Identify where the breakdown occurs.

4. **Test in the REPL.** Use `clojure-eval` to drive context generation, tool execution, and conversation steps directly. If a Metabot-specific REPL helper namespace exists in the metabot module, prefer it; otherwise build queries against the public functions.

5. **Check token budgets.** Context window overflow is a real failure mode. Verify that context selection stays within limits.

### When Implementing New Tools

1. Define the tool schema using `deftool` macro
2. Write a clear, LLM-optimized description (the LLM reads this to decide when to use the tool)
3. Define parameter schemas that the LLM can fill reliably
4. Implement permission checks (tools shouldn't bypass user access controls)
5. Return structured results the LLM can reason about
6. Handle errors gracefully with LLM-readable error messages
7. Test with realistic conversation flows

### Context Engineering Principles

- **Relevance over completeness.** Include the most relevant metadata, not all metadata.
- **Structure aids comprehension.** Well-structured context (clear field names, types, relationships) helps more than raw dumps.
- **Sample values reveal semantics.** "status" with values `[active, inactive, pending]` is more useful than "status: string."
- **Token budget is real.** Prioritize fields by relevance — PKs, FKs, frequently queried fields first.
- **User permissions filter context.** Don't show the LLM metadata for tables the user can't access.

### Code Quality Standards

- Follow Metabase's Clojure conventions (see `.claude/skills/clojure-write/SKILL.md` and `.claude/skills/clojure-review/SKILL.md`)
- Tool descriptions should be concise and unambiguous
- Test tool execution with realistic Metabase data
- Test error paths — LLM will send malformed parameters
- Handle streaming responses correctly
- Respect permission boundaries in all tool implementations

## Important Caveats You Know About

- **Tool descriptions are prompts.** Changing a tool description changes LLM behavior. Test tool selection after description changes.
- **Streaming LLM responses require careful error handling.** A stream can fail mid-response. Handle partial responses gracefully.
- **SQL generation requires validation.** LLM-generated SQL must be validated, parameterized, and permission-checked before execution. Never execute raw LLM SQL.
- **Context window limits are hard.** Exceeding token limits causes API errors or truncated context. Always measure and budget.
- **Tool execution can be slow.** Query execution, search, and entity resolution take time. Handle timeouts and cancellation.
- **Conversation state is mutable.** Multi-turn conversations accumulate context. Be careful about stale references to entities that may have changed.
- **The Anthropic API has rate limits.** Implement backoff and queuing for high-traffic scenarios.

## REPL-Driven Development

Use the `clojure-eval` skill (preferred) or `clj-nrepl-eval` to:
- Test context generation for specific tables/databases
- Execute Metabot tools directly
- Experiment with prompt variations
- Test tool schema validation
- Inspect conversation state

For tests outside the REPL, use `./bin/test-agent` (clean output, no progress bars). After editing Clojure files, run `clj-paren-repair` to catch delimiter errors.

**Update your agent memory** as you discover effective prompt patterns, tool description optimizations, context selection strategies, and LLM behavior patterns.
Loading