Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
331 commits
Select commit Hold shift + click to select a range
d3f0617
Bind span header redaction to the hosted HTTP client (#1626)
RhysSullivan Aug 17, 2026
2ea7494
Negative-cache dead MCP session ids in the workers (#1627)
RhysSullivan Aug 17, 2026
4263f33
Warm the Start server graph on isolate first-fetch (#1628)
RhysSullivan Aug 17, 2026
003fb07
First-party OAuth clients (#1527)
RhysSullivan Aug 17, 2026
75a3c45
Keep the standalone MCP SSE listener open after undelivered replay (#…
RhysSullivan Aug 17, 2026
df2eeaa
Add Gmail modify support (#1630)
RhysSullivan Aug 17, 2026
c443219
Hold MCP listener streams open: keepalives + drained Last-Event-ID ro…
RhysSullivan Aug 17, 2026
deb39f7
Trace first-party OAuth usage (#1633)
RhysSullivan Aug 17, 2026
194ef26
Revert "Warm the Start server graph on isolate first-fetch (#1628)" (…
RhysSullivan Aug 17, 2026
f5fffae
Add Google OAuth homepage (#1635)
RhysSullivan Aug 17, 2026
77f7ac3
Route Google OAuth page to marketing (#1636)
RhysSullivan Aug 17, 2026
ffb28cc
Bypass Start for marketing requests (#1637)
RhysSullivan Aug 17, 2026
7f5151e
Add fresh Google Workspace homepage (#1638)
RhysSullivan Aug 17, 2026
c83cdd2
Add plain Executor overview (#1639)
RhysSullivan Aug 17, 2026
f64028a
Speed up and stabilize CI e2e (#1551)
RhysSullivan Aug 18, 2026
63ea028
Add Slack first-party OAuth (#1640)
RhysSullivan Aug 18, 2026
5e1875f
Show first-party OAuth for MCP discovery (#1641)
RhysSullivan Aug 18, 2026
32206c7
Preserve OAuth scopes on spec refresh (#1642)
RhysSullivan Aug 18, 2026
e2d9f23
Handle Slack user OAuth scopes (#1643)
RhysSullivan Aug 18, 2026
b18e8cf
Select Slack user token grants (#1645)
RhysSullivan Aug 18, 2026
9ecc7cb
Opt-in modern protocol negotiation for stdio MCP servers (#1646)
RhysSullivan Aug 18, 2026
86acd38
Bring CI under two minutes (#1644)
RhysSullivan Aug 18, 2026
039422c
Drop ignored package from mixed changeset (#1651)
RhysSullivan Aug 18, 2026
22a0383
Version Packages (#1653)
RhysSullivan Aug 18, 2026
12a1bb2
Normalize Slack OAuth scopes (#1652)
RhysSullivan Aug 18, 2026
256e25e
Kill stdio MCP children when a dial is interrupted (#1654)
RhysSullivan Aug 18, 2026
1c24f56
Fix two CI e2e flakes: stylesheet-count race and dev-db queue wedge (…
RhysSullivan Aug 18, 2026
34f3720
Capture pageviews on the marketing site (#1655)
RhysSullivan Aug 18, 2026
739805f
Support GitHub App OAuth permissions (#1659)
RhysSullivan Aug 18, 2026
a5f3400
Fix two more CI e2e flakes: picker hydration race and dev-db ghost af…
RhysSullivan Aug 18, 2026
41ec2d6
Poll the emulator ledger instead of racing its write (#1661)
RhysSullivan Aug 18, 2026
586a9c0
Recognize vite strictPort exits as port collisions in claimAndBoot (#…
RhysSullivan Aug 18, 2026
d16abec
Expand first-party Google Workspace support (#1663)
RhysSullivan Aug 18, 2026
06786d0
Make latency regressions attributable: version stamps, deploy markers…
RhysSullivan Aug 18, 2026
5897721
Generate the isolate instance id lazily, not in global scope (#1666)
RhysSullivan Aug 18, 2026
81d4cf9
Cache JWKS across isolates and serve stale keys on refresh failure (#…
RhysSullivan Aug 18, 2026
e27931f
Attribute local_verify latency to a phase (#1667)
RhysSullivan Aug 18, 2026
c0d25e4
Split the jwt_verify cost into store read vs key import (#1668)
RhysSullivan Aug 18, 2026
46cea2c
Add Gmail settings access
RhysSullivan Aug 18, 2026
e77e09c
Auto-merged main into fix/gmail-settings-scopes on deployment.
RhysSullivan Aug 18, 2026
58ebd70
Add temporary clock-sync probe to separate pre-work time from real wo…
RhysSullivan Aug 18, 2026
0e5cb44
Probe cache and timer latency directly in the handler (#1671)
RhysSullivan Aug 18, 2026
7277833
Fix probe typecheck: caches.default needs the Workers CacheStorage ty…
RhysSullivan Aug 18, 2026
fde4450
Probe a real outbound fetch alongside the local probes (#1673)
RhysSullivan Aug 18, 2026
68d5e8b
Split header time from body-read time on the docs upstream (#1674)
RhysSullivan Aug 18, 2026
dd0bbd2
Separate Start cold-graph cost from per-request cost (#1675)
RhysSullivan Aug 18, 2026
2670c2b
Clock-sync both sides of fetchHandler so handlerMs is real (#1676)
RhysSullivan Aug 18, 2026
9551da9
Time Start module evaluation separately from first-request app init (…
RhysSullivan Aug 18, 2026
54ccca9
Forward docs and PostHog proxies before loading the Start graph (#1678)
RhysSullivan Aug 18, 2026
42d4e49
Fix Google OAuth service policies
RhysSullivan Aug 18, 2026
44d9ed3
Merge pull request #1669 from UsefulSoftwareCo/fix/gmail-settings-scopes
RhysSullivan Aug 18, 2026
ca9617e
Warm the Start server graph on isolates that persist (#1679)
RhysSullivan Aug 18, 2026
332955f
Revert "Warm the Start server graph on isolates that persist (#1679)"…
RhysSullivan Aug 18, 2026
29a0aea
Warm the Start server graph on isolate first fetch (#1681)
RhysSullivan Aug 19, 2026
aff1f39
Revert "Warm the Start server graph on isolate first fetch (#1681)" (…
RhysSullivan Aug 19, 2026
46625d2
Warm the Start graph by replaying a real request per isolate (#1686)
RhysSullivan Aug 19, 2026
1b2509c
Log whether the warmup runs and whether warm isolates still pay for S…
RhysSullivan Aug 19, 2026
1c57887
Fix lint: do not stringify the unknown warmup error (#1688)
RhysSullivan Aug 19, 2026
1c62f4a
Remove the Start graph warmup attempts and latency probes (#1689)
RhysSullivan Aug 19, 2026
b6e8c68
Revert "Serve MCP spec 2026-07-28 and consolidate onto SDK v2" (#1611…
RhysSullivan Aug 19, 2026
98a34e3
Restore "Serve MCP spec 2026-07-28 and consolidate onto SDK v2" (#161…
RhysSullivan Aug 19, 2026
d89c733
Revert "Migrate outbound MCP client to SDK v2" (8cb0d22a3) (#1692)
RhysSullivan Aug 19, 2026
d5beb46
Drop targeted placement to test isolate distribution (#1693)
RhysSullivan Aug 19, 2026
cd9b978
Add isolate lifecycle signals to worker spans (#1694)
RhysSullivan Aug 19, 2026
54cde5e
Drop the MCP Durable Object from the SSR app graph (#1696)
RhysSullivan Aug 19, 2026
a5800a1
Revert the outbound MCP SDK v2 migration (#1697)
RhysSullivan Aug 19, 2026
4817fa1
Drop the e2e assertion contradicting the Google scope allowlist (#1700)
RhysSullivan Aug 19, 2026
4cc5c4d
Measure isolate reuse and the evaluated module closure directly (#1698)
RhysSullivan Aug 19, 2026
f08e84d
Load the code-execution stack on demand in the MCP session DO (#1699)
RhysSullivan Aug 19, 2026
9e7afaf
Disable product telemetry in CI (#1701)
RhysSullivan Aug 20, 2026
b917755
Exempt paid organizations from the execution rate-limit backstop (#1695)
RhysSullivan Aug 20, 2026
9a38ab4
Restore targeted placement to aws:us-east-1 (#1704)
RhysSullivan Aug 20, 2026
2bdbedf
Reserve the OAuth sign-in window on the click, not after discovery (#…
RhysSullivan Aug 20, 2026
e9920c3
Fix Slack Connect image reads (#1705)
RhysSullivan Aug 20, 2026
8f20477
Serve /api at the Worker entry instead of through TanStack Start (#1706)
RhysSullivan Aug 20, 2026
91ee3db
Stop CI failing on waits that were never about the product (#1707)
RhysSullivan Aug 20, 2026
dc1b5aa
Import the app handler lazily in start.ts (#1710)
RhysSullivan Aug 20, 2026
442b3f0
Build the Ajv instance on first use and mark codemode-core side-effec…
RhysSullivan Aug 20, 2026
73cbba9
Disable product telemetry in every workflow (#1709)
RhysSullivan Aug 21, 2026
c11bef2
Cloudflare: MCP-only preset with codemode=false, warn on missing opt-…
RhysSullivan Aug 21, 2026
6cad3d2
Classify sandbox execution failures on execute spans (#1726)
RhysSullivan Aug 24, 2026
9ba9e7a
Disable telemetry in terminal E2E sessions (#1728)
RhysSullivan Aug 25, 2026
6ea21bc
Disable telemetry in desktop smoke container (#1729)
RhysSullivan Aug 25, 2026
a2d1417
Keep connection list health compact by default (#1648)
baggiiiie Aug 25, 2026
0b0b74f
Reland outbound MCP client on SDK v2 (spec 2026-07-28) (#1733)
RhysSullivan Aug 25, 2026
0c81533
Stabilize cloud E2E scenarios (#1735)
RhysSullivan Aug 25, 2026
69c25d2
Fix README demo on npm (#1734)
RhysSullivan Aug 25, 2026
0557d8d
Restore the marketing hero copy (#1738)
RhysSullivan Aug 25, 2026
9296f36
Scope the skills tool description to executor's own docs (#1737)
RhysSullivan Aug 25, 2026
0ae7959
Version Packages (#1657)
RhysSullivan Aug 25, 2026
2385866
Render README demo as GIF (#1739)
RhysSullivan Aug 25, 2026
62748e8
Add opt-in per-integration MCP search tools (#1741)
RhysSullivan Aug 25, 2026
05c3b22
Drop eager MCP schema preload in workerd isolates (#1742)
RhysSullivan Aug 25, 2026
91062c2
Load the MCP client SDK lazily on first outbound connection (#1747)
RhysSullivan Aug 25, 2026
1bbd47e
Fix dev-db socket server slot leak and add a wedge watchdog (#1744)
RhysSullivan Aug 25, 2026
eb34d04
Serve the cloud console as an SPA with a prerendered shell (#1748)
RhysSullivan Aug 26, 2026
d4afe0c
Slim per-integration search tool definitions (#1749)
RhysSullivan Aug 26, 2026
b429102
Re-arm the post-checkout billing poll across effect recycles (#1750)
RhysSullivan Aug 26, 2026
0007474
Stream the OpenAPI preview for Graph-sized spec selections (#1751)
RhysSullivan Aug 26, 2026
ddbf0fe
Serve Microsoft Graph selections from precomputed spec slices (#1753)
RhysSullivan Aug 26, 2026
6574ab1
Stop evicting standalone MCP listeners; fail fast when the transport …
RhysSullivan Aug 26, 2026
7c12aee
Make Microsoft Graph slice URLs first-class spec sources (#1755)
RhysSullivan Aug 26, 2026
ea5ae61
Bump free tier to 100k executions per month (#1757)
RhysSullivan Aug 26, 2026
a788874
Label oauth2 auth methods so multiple templates stay distinguishable …
RhysSullivan Aug 26, 2026
5d18978
MCP enterprise-managed authorization (client) (#1730)
RhysSullivan Aug 26, 2026
e76a9b4
Capture executed code and result sizes in cloud telemetry (#1727)
RhysSullivan Aug 26, 2026
2c75d7a
Gate enterprise-managed authorization behind a PostHog flag (#1758)
RhysSullivan Aug 26, 2026
30cfb4d
Serve runtime-observed output shapes for schemaless tools (#1759)
RhysSullivan Aug 27, 2026
29b7a77
Connect dialog: search the integrations.sh catalog (#1763)
RhysSullivan Aug 27, 2026
4c9e755
Fix blurry YC badge on mobile (#1770)
RhysSullivan Aug 27, 2026
cd3d000
Classify non-JSON and HTTP-200 refresh refusals as dead grants (#1783)
RhysSullivan Aug 27, 2026
61b3d9a
Provision Autumn customers for orgs and self-heal customer_not_found …
RhysSullivan Aug 27, 2026
e3acef7
Classify Durable Object platform failures as retryable protocol error…
RhysSullivan Aug 27, 2026
55180cb
Shape storage error messages and classify connection faults (#1784)
RhysSullivan Aug 27, 2026
b885436
Trace and type the execution rate-limit counter (#1782)
RhysSullivan Aug 28, 2026
27b044d
MCP session cold init resilience (#1787)
RhysSullivan Aug 28, 2026
c59e23c
Classify CPU-limit Durable Object resets as retryable (#1792)
RhysSullivan Aug 28, 2026
36c901b
Stable Sentry error grouping across deploys (#1781)
RhysSullivan Aug 28, 2026
e63a6b7
Unlist the built-in Google OAuth app from connect pickers (#1795)
RhysSullivan Aug 28, 2026
3927eba
Back off vault version-check retries and persist rotated refresh toke…
RhysSullivan Aug 28, 2026
5062eb5
Persist connection health verdicts on failure and always send ifStale…
RhysSullivan Aug 28, 2026
3b3c80a
Normalize frontend error reports and wire the desktop reporter (#1785)
RhysSullivan Aug 28, 2026
5a2a247
Drop platform resets reported by the Durable Object instrumentation (…
RhysSullivan Aug 28, 2026
38656a4
fix(oauth): honor discovered CIMD support (#1732)
aryasaatvik Aug 28, 2026
03d23b9
desktop: classify expected sidecar shutdowns (#1776)
RhysSullivan Aug 28, 2026
349b049
Use the integrations.sh logo for GitHub and OpenAI presets (#1547)
midego1 Aug 28, 2026
b83999f
Fix missing integration icons in the local sidebar (#1715)
bohdanbirdie Aug 28, 2026
9dff4e8
Preview the connections.list item in the connection edit sheet (#1746)
sergical Aug 28, 2026
c8bb857
Clear the 1Password service-account token from the op-js global after…
GeiserX Aug 28, 2026
e66a3d8
Clear the OAuth popup result from localStorage after handover (#1570)
GeiserX Aug 28, 2026
31e17c7
Write the desktop settings store owner-only (#1579)
GeiserX Aug 28, 2026
6535a74
Write the CLI server-connection store owner-only, and make its tests …
GeiserX Aug 28, 2026
6a0b399
fix(graphql): refuse an empty credential value instead of dialing wit…
GeiserX Aug 28, 2026
b4add2d
fix(local): stop the database being readable by other accounts on the…
GeiserX Aug 28, 2026
662ebe2
fix(oauth): declare DCR application type (#1609)
timkley Aug 28, 2026
cb28748
fix(sdk): try the OIDC path-appended well-known during OAuth discover…
mpressiv-vault Aug 28, 2026
9c35f26
Release the SSE request when a remote MCP connection closes (#1716)
xav-ie Aug 28, 2026
e8e97c4
Report expired, not healthy, when an MCP connection's credential is m…
GeiserX Aug 28, 2026
45ba141
Keep credentials out of the MCP connection pool's cache key (#1573)
GeiserX Aug 28, 2026
4a8fd8c
Fail a credential lookup when the store stops answering, instead of h…
GeiserX Aug 28, 2026
05aa602
Stop reporting a rejected credential as a missing tool (#1586)
GeiserX Aug 28, 2026
c62d7eb
Fix broad toolkit approve policies being dropped as legacy connection…
sethcarlton Aug 28, 2026
69b0e64
Verify the packed worker-bundler at build time and report an incomple…
RhysSullivan Aug 28, 2026
e8ea62c
Prevent duplicate migration-stamp failures during concurrent startup …
jadch Aug 28, 2026
dbb58f4
Skip redundant Cloudflare D1 schema preparation (#1455)
jadch Aug 28, 2026
ebdfb44
Fix MCP catalog refresh races and transport diagnostics (#1563)
niieani Aug 28, 2026
6609fa6
End a request's sandbox fibers before its database connection closes …
RhysSullivan Aug 28, 2026
eac13e7
Reclaim idle MCP session runtimes (#1800)
RhysSullivan Aug 28, 2026
d5946f1
Resolve the MCP session name from a single source in the alarm path (…
RhysSullivan Aug 28, 2026
a3a73e0
desktop: keep the mac signing cert off the windows build (#1797)
RhysSullivan Aug 28, 2026
bc8dd39
Version Packages (#1743)
RhysSullivan Aug 28, 2026
2afb6e8
Give each request its own execution stack build (#1802)
RhysSullivan Aug 28, 2026
d6c5fc3
Restore desktop build assets deleted by accident in #1759 (#1805)
RhysSullivan Aug 28, 2026
78311a1
Fail fast when desktop build resources are missing (#1807)
RhysSullivan Aug 28, 2026
e61beb7
Version Packages (#1804)
RhysSullivan Aug 28, 2026
93817ed
Move Team to per-member pricing with unlimited executions (#1806)
RhysSullivan Aug 28, 2026
0004ea3
fix: scope MCP replay to the requested stream (#1529)
jadch Aug 28, 2026
9cab261
Derive toolkit MCP executors over the daemon's open database (#1409)
jackulau Aug 28, 2026
4879d47
Sweep every expired MCP connection, not just the one being asked for …
GeiserX Aug 28, 2026
e5526f3
Keep a query-carried credential out of GraphQL introspection's failur…
GeiserX Aug 28, 2026
8324e1e
fix(mcp): stop handing stdio servers every secret in executor's envir…
GeiserX Aug 28, 2026
75c917f
fix(mcp): support declared OAuth scopes (#1607)
timkley Aug 28, 2026
85b1955
Fix OpenAPI multipart file field uploads (#1530)
BittuBarnwal7479 Aug 28, 2026
597ce90
feat: persist MCP install preferences (#1772)
baggiiiie Aug 28, 2026
d874455
Sweep expired authorization sessions so abandoned PKCE verifiers do n…
GeiserX Aug 28, 2026
6225d5e
Keep token material out of OAuth token-endpoint errors (#1567)
GeiserX Aug 28, 2026
b77ee69
fix(health): keep credentials out of the response sample we persist (…
GeiserX Aug 28, 2026
27cb466
Defer irreversible cleanup until the removal commits (#1572)
GeiserX Aug 28, 2026
98615b4
Gate OAuth token refresh on credential store writability (#1377)
RhysSullivan Aug 28, 2026
8c20c33
fix(selfhost): refresh stale connection tools concurrently and expose…
Adityakk9031 Aug 28, 2026
1908dd6
allow initialization after unsupported mcp discovery (#1458)
tylergibbs1 Aug 28, 2026
2b4e106
fix(host-mcp): evict idle MCP sessions instead of leaking them (#1685)
daviesayo Aug 28, 2026
ac2dec6
Drop the ignored package from the pre-initialize changeset (#1810)
RhysSullivan Aug 28, 2026
1d4d161
GraphQL health check: drop the schema root type as connection identit…
RhysSullivan Aug 28, 2026
97ff388
Bound tools reads' wait on stale catalog rebuilds (#1824)
RhysSullivan Aug 28, 2026
3840753
Add bug report, feature request, and pull request templates (#1812)
RhysSullivan Aug 28, 2026
2da4953
feat: add sidebar integration connect shortcut (#1720)
Zeko369 Aug 28, 2026
ba62f1a
feat(mcp): support integration families (#1702)
altaywtf Aug 28, 2026
573d099
Confirm before destructive actions (revoke key, remove policy, remove…
midego1 Aug 28, 2026
4b0fbf6
Only probe the MCP server URL once it looks complete (#1815)
RhysSullivan Aug 28, 2026
6305b6d
Carry MCP tool _meta through tools/list decoding into the catalog (#1…
RhysSullivan Aug 28, 2026
1cd81d6
Fix false update-available nags (#1819)
RhysSullivan Aug 28, 2026
66fb1a4
Keep dialogs and sheets open on an outside click (#1814)
RhysSullivan Aug 28, 2026
435c0f2
Support authenticated remote MCP servers with custom request headers …
RhysSullivan Aug 28, 2026
d74865f
fix(local): repair bigint columns left in SQLite's integer storage cl…
RhysSullivan Aug 28, 2026
a9bf623
feat(selfhost): allow additional trusted browser origins (#1441)
salmonumbrella Aug 28, 2026
06a7b75
Render not-found for an org slug the session does not belong to (#1825)
RhysSullivan Aug 28, 2026
2168029
e2e: add self-host coverage for emit() content blocks (#1592) (#1820)
RhysSullivan Aug 28, 2026
ecb87de
feat(mcp): add edit support for stdio sources (#1775)
The-AarushiSingh Aug 28, 2026
742a144
Classify disabled-API 403s as misconfigured instead of expired (#1402)
RhysSullivan Aug 28, 2026
c1f51b7
Share the OAuth refresh gate across execution stacks (#1537)
Rish-it Aug 28, 2026
ad702a9
Add registered first-party OAuth providers (#1717)
RhysSullivan Aug 28, 2026
d7e4b73
Preserve an explicitly absent OAuth resource across all grants (#1822)
RhysSullivan Aug 28, 2026
02b52cd
perf(storage): add bulk plugin-storage upserts (#1098)
aryasaatvik Aug 28, 2026
369fa0a
Support multiple 1Password vaults (#1829)
RhysSullivan Aug 28, 2026
2ddfa29
Version Packages (#1811)
RhysSullivan Aug 28, 2026
515d6aa
Revalidate stale connection health verdicts automatically (#1708)
RhysSullivan Aug 28, 2026
c0c7a0d
Harden URL handling in exported telemetry (#1477)
RhysSullivan Aug 28, 2026
8f6e4dd
Remove changeset targeting an ignored package (#1831)
RhysSullivan Aug 28, 2026
10e16a5
Reject duplicate connection names on create (#1346)
RhysSullivan Aug 28, 2026
0221a0d
Stamp verdict flips and failure reasons on health-check telemetry (#1…
RhysSullivan Aug 29, 2026
d13151a
1Password: multiple named accounts (#1841)
RhysSullivan Aug 29, 2026
35dba11
Close field-free dialogs on outside click by default (#1843)
RhysSullivan Aug 29, 2026
9fa1e9f
Deflake concurrent health-check coalescing tests (#1844)
RhysSullivan Aug 29, 2026
939b96f
Import plugin-authoring symbols from sdk/core in file-secrets and key…
RhysSullivan Aug 29, 2026
85bd781
Add regression e2e for surfaced OAuth setup failure causes (#1839)
RhysSullivan Aug 29, 2026
22d06aa
Deflake dialog outside-dismiss: sync clicks with Radix arming (#1847)
RhysSullivan Aug 29, 2026
06bf742
Surface MCP OAuth reauthorization during catalog discovery (#1818)
ramarivera Aug 29, 2026
9dcfaa5
fix(oauth): route DCR reconnect through registration flow (#1559)
Adityakk9031 Aug 29, 2026
8b3a468
Attach a diagnosis to the dev-db socket wedge timeouts (#1767)
RhysSullivan Aug 29, 2026
1d483a8
Load QuickJS lazily and cap concurrent session builds (#1840)
RhysSullivan Aug 29, 2026
3ba28ca
Fix the dev-db socket test wedge: bind conflicts hung server.start() …
RhysSullivan Aug 29, 2026
a679c3c
Cap resident MCP session runtimes with LRU eviction (#1842)
RhysSullivan Aug 29, 2026
1e8ce10
Annotate session init spans with catalog size counts (#1857)
RhysSullivan Aug 29, 2026
7cfcfef
Discover local Codex plugins as stdio MCP presets (#1837)
RhysSullivan Aug 29, 2026
ffcfbc0
Add changeset for Codex plugin integrations (#1858)
RhysSullivan Aug 29, 2026
058592d
Release the Codex plugin integrations as a patch (#1859)
RhysSullivan Aug 29, 2026
2cad774
Cache 1Password resolutions and unblock the op spawn (#1860)
RhysSullivan Aug 30, 2026
5c0fa88
Version Packages (#1832)
RhysSullivan Aug 30, 2026
4d4ad7c
Pool stdio MCP connections between tool calls (#1861)
RhysSullivan Aug 30, 2026
00c2ab7
Stop asking for CODEX_HOME when adding a Codex plugin (#1863)
RhysSullivan Aug 30, 2026
48ab9fe
Version Packages (#1862)
RhysSullivan Aug 30, 2026
30ddd79
Registry-powered onboarding: full-page picker, quick add, spec-carrie…
RhysSullivan Aug 30, 2026
21119da
Measure execute result size once per result object (#1866)
RhysSullivan Aug 30, 2026
9a1fbd5
Long-poll the desktop OAuth await endpoint (#1865)
RhysSullivan Aug 30, 2026
fad3650
Cache api key validations per isolate (#1864)
RhysSullivan Aug 30, 2026
c695970
Explain macOS permissions for Codex plugins (#1869)
RhysSullivan Aug 30, 2026
8e2515c
Version Packages (#1868)
RhysSullivan Aug 30, 2026
b81476d
Revert "Cache api key validations per isolate (#1864)" (#1870)
RhysSullivan Aug 30, 2026
98d6c6a
Run independent tool-call reads concurrently (#1867)
RhysSullivan Aug 30, 2026
75b3674
Sign desktop with the Apple Events entitlement so macOS can prompt (#…
RhysSullivan Aug 30, 2026
fff7ed6
Version Packages (#1875)
RhysSullivan Aug 30, 2026
1b78f7c
Speed up desktop publish (#1902)
RhysSullivan Aug 31, 2026
c27436d
Support OAuth HTTP Basic client auth (#1904)
RhysSullivan Aug 31, 2026
da2f2e1
Move pkg-pr-new mac leg and graph-slices to blacksmith (#1903)
RhysSullivan Aug 31, 2026
e8590a0
Speed up the release pipeline (#1905)
RhysSullivan Aug 31, 2026
b5271a6
Support raw OAuth Basic credentials (#1907)
RhysSullivan Aug 31, 2026
6d1f670
Expose OpenAPI spec updates (#1913)
RhysSullivan Sep 1, 2026
9c67fd5
Wait for OAuth connect actionability instead of reading the first pai…
RhysSullivan Sep 1, 2026
caa0391
Restrict workspace writes to admins (#1919)
RhysSullivan Sep 2, 2026
9cdf4fe
Raise free-tier execution rate limit to 10k/hour (#1931)
RhysSullivan Sep 3, 2026
704988a
Add pricing nav link (#1932)
RhysSullivan Sep 3, 2026
e9d9c6f
Route pricing to marketing (#1933)
RhysSullivan Sep 3, 2026
5e4da2a
Exempt every non-free plan from the execution rate limit (#1934)
RhysSullivan Sep 3, 2026
31a8042
Gate Google OAuth listings by user flag (#1947)
RhysSullivan Sep 4, 2026
b22d536
Feat/selfhost google sso (#1834)
charliemeyer2000 Sep 5, 2026
38915a3
Keep workspace write release patch-level (#1949)
RhysSullivan Sep 5, 2026
fa48559
Merge upstream main while preserving external OIDC login
zrm625 Sep 5, 2026
69c2e48
Support existing accounts linking SSO and recovering from callback fa…
zrm625 Sep 5, 2026
0cd86af
Scope external identities and preserve interrupted authentication
zrm625 Sep 5, 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
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"@executor-js/plugin-openapi",
"@executor-js/plugin-example",
"@executor-js/plugin-desktop-settings",
"@executor-js/desktop"
"@executor-js/desktop",
"@executor-js/local"
]
],
"linked": [],
Expand All @@ -29,7 +30,6 @@
"onlyUpdatePeerDependentsWhenOutOfRange": true
},
"ignore": [
"@executor-js/local",
"@executor-js/host-mcp",
"@executor-js/ir",
"@executor-js/runtime-deno-subprocess",
Expand Down
5 changes: 5 additions & 0 deletions .changeset/first-party-oauth-listing-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@executor-js/sdk": patch
---

Allow hosts to control first-party OAuth app listings for each acting user without disrupting existing connections.
5 changes: 5 additions & 0 deletions .changeset/oauth-client-basic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"executor": patch
---

Allow manually registered OAuth apps to use HTTP Basic client authentication for token exchange and refresh.
5 changes: 5 additions & 0 deletions .changeset/openapi-update-spec-tool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@executor-js/plugin-openapi": patch
---

Expose OpenAPI spec updates as an approval-gated Executor tool so agents can refresh URL-backed integrations without removing their connections.
5 changes: 5 additions & 0 deletions .changeset/raw-oauth-basic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@executor-js/sdk": patch
---

Add a raw HTTP Basic compatibility mode for OAuth providers that reject form-encoded client credentials.
9 changes: 9 additions & 0 deletions .changeset/selfhost-sso-sign-in.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"executor": patch
---

**Self-host: bring-your-own SSO (Google, Okta, any OIDC IdP) with a verified-domain allowlist**

Operators can enable a single OIDC sign-in provider on a self-hosted instance by setting `EXECUTOR_SSO_PROVIDER_ID`, `EXECUTOR_SSO_CLIENT_ID`, `EXECUTOR_SSO_CLIENT_SECRET`, and `EXECUTOR_SSO_ALLOWED_DOMAINS` (comma-separated email domains), plus `EXECUTOR_SSO_DISCOVERY_URL` for providers without a preset (`google` is preset; `EXECUTOR_SSO_PROVIDER_NAME` overrides the button label). The login page renders a "Continue with <provider>" button when configured (discovered through the new unauthenticated `GET /api/auth-config`, which returns provider id + display name only), and the MCP OAuth connect flow's login step gains the same option since it lands on the same page.

The domain allowlist replaces the invite code for SSO sign-ups: a sign-in whose IdP-verified email (`email_verified`) has an allowlisted domain auto-joins the instance organization as a member; unverified emails and any other domain are refused. Enabling the provider without an allowlist is refused at boot, as is a half-configured client id/secret pair, so SSO can never silently become open registration. Email/password sign-in and invite-based signup are unchanged. The end-to-end flow (discovery → redirect → consent → callback → membership) is exercised in tests against an emulated OIDC IdP from `@executor-js/emulate`.
52 changes: 52 additions & 0 deletions .changeset/workspace-writes-admin-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
"@executor-js/sdk": patch
"@executor-js/api": patch
"@executor-js/plugin-graphql": patch
"@executor-js/plugin-mcp": patch
"@executor-js/plugin-openapi": patch
---

**Workspace writes now require an administrator**

Executor bindings accept `orgWrites: "allowed" | "denied" | "request"`.
Request-aware hosts use `"request"` and bind `CurrentOrgWriteAccess` from the
authenticated principal for each request. An approval, decline, cancellation,
or form response also rebinds the paused execution to the resumer's current
access. Browser approvals derive access from the authenticated browser user's
live organization membership when that user posts the decision, rather than
from the earlier MCP request waiting for it or the user's global role. Self-host
uses the same Better Auth membership lookup for ordinary requests and browser
decisions. A demotion before either kind of resume therefore takes effect
before the paused execution can reach a workspace-write sink.

`Principal` now declares its role model explicitly: organization-backed hosts
carry `orgRoleModel: "organization"` and an optional normalized admin/member
role, while hosts without roles carry `orgRoleModel: "none"` and cannot also
carry an organization role. Missing role data under the organization model
fails closed, including legacy persisted MCP session metadata. Cloud derives
roles from WorkOS memberships and self-host derives them from Better Auth.

Members may still read and execute shared workspace resources and perform
operational maintenance such as token refresh and tool-catalog synchronization.
User-requested workspace mutations now return `OrgWriteDeniedError` (HTTP 403):
workspace connections and reconnects, organization OAuth clients and connect
flows, tool policies, and integration add/update/replace/remove/health-check
operations. Personal connection management remains available.

Pasted connection credentials, OAuth client secrets, OAuth connection tokens,
and dependent tool discovery run only after the outermost transaction commits
their row, including when a plugin wraps creation in `ctx.transaction`. Each
committed row records unique provider item references owned by that write
attempt. Reads resolve only those recorded references, so the post-commit
window fails closed with a retryable incomplete-write error and can never
resolve a predecessor's credential. A process crash leaves detectable missing
references; a later executor incarnation can atomically replace and retry a
stranded pasted connection, while OAuth client and connection retries replace
their rows through their existing update paths.

If credential persistence fails while the process remains alive, row and
provider compensation restore the prior state where possible and surface
incomplete cleanup explicitly. Best-effort cleanup can leave inert orphaned
attempt items, but an attempt never shares an item reference with a successor,
eliminating the former successor-clobber interval without requiring provider
compare-and-set support.
19 changes: 18 additions & 1 deletion .claude/skills/prod-telemetry/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@ join the same traces via traceparent).

**Span names worth querying** (and their custom attrs):

- `mcp.execute` / `mcp.execute.resume` — `mcp.execute.mode`
(`pausable`/`inline`), `mcp.execute.code_length`, and
`mcp.execute.outcome` (`ok`/`fail`/`paused`) with, on failures,
`mcp.execute.error_kind` (`type_error` | `reference_error` |
`syntax_error` | `range_error` | `tool_error` | `timeout` |
`resource_limit` | `serialization_error` | `thrown` | `unknown`).
Sandbox script failures ride the MCP success channel, so `status.code`
stays OK — filter on these attributes, not span status. Spans from
before the attributes shipped carry neither; absence is not success.
Also `mcp.execute.result_chars` (compact-JSON size of the returned
value, pre-truncation; -1 = unmeasurable), `mcp.execute.log_chars`,
`mcp.execute.emitted` — the dump-vs-narrow signal (the model preview
truncates at 30k chars, so `result_chars > 30000` means the model tried
to pull a truncated blob into context).
- `executor.tool.execute` — `mcp.tool.name` (full address), and since
PR #992: `executor.tool.outcome` (`ok`/`fail`),
`executor.tool.error_code`, `executor.tool.error_status`,
Expand All @@ -39,7 +53,10 @@ join the same traces via traceparent).
`base_url`, and since PR #992 `http.status_code`.
- `mcp.request` (outer) — `mcp.auth.organization_id`,
`mcp.auth.account_id`, `mcp.tool.name`, CF edge fields (`cf.country`…),
MCP client fingerprint (`mcp.client.name`…).
MCP client fingerprint (`mcp.client.name`…), and on managed-cloud
`execute`/`execute-action` calls `mcp.execute.code` (the script itself,
capped at 10k chars — cloud-only content capture; local/self-host
telemetry never records content).

**Recipe — error signatures by class (the daily-digest query):**

Expand Down
100 changes: 100 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Bug report
description: Something in Executor does not work as expected.
title: "[bug] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Please update to the latest version first — the bug may already be fixed.
If the desktop app crashes, will not start, or shows a blank window, use the
**[Desktop app crash](?template=desktop-crash.yml)** template instead.
- type: input
id: version
attributes:
label: Executor version
description: Run `executor --version`, or open the About menu in the desktop app.
placeholder: "1.5.4"
validations:
required: true
- type: dropdown
id: surface
attributes:
label: How do you run Executor?
options:
- Executor Cloud
- CLI
- Desktop app
- Self-host (Docker)
- Self-host (Cloudflare)
validations:
required: true
- type: dropdown
id: os
attributes:
label: Operating system
description: For Executor Cloud, select the system you browse from.
options:
- macOS (Apple Silicon)
- macOS (Intel)
- Windows
- Linux
validations:
required: true
- type: input
id: integration
attributes:
label: Integration involved
description: The integration or source type, if the bug is specific to one.
placeholder: "MCP server, OpenAPI spec, GraphQL API, …"
- type: textarea
id: what-happened
attributes:
label: What happened
description: Describe the behaviour you saw.
validations:
required: true
- type: textarea
id: expected
attributes:
label: What you expected
description: Describe the behaviour you wanted instead.
validations:
required: true
- type: textarea
id: repro
attributes:
label: Steps to reproduce
description: The smallest sequence that shows the bug. Include the commands you ran.
value: |
1.
2.
3.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Diagnostics / logs
description: |
In the desktop app, open the **Executor** menu → **Export Diagnostics…** and attach
the zip — it has everything we need and no secrets.

Otherwise attach the relevant log:
- CLI / self-host: `~/.executor/logs/` (run `executor service status` for the exact path)
- macOS desktop: `~/Library/Logs/Executor/main.log`
- Windows desktop: `%APPDATA%\Executor\logs\main.log`
- Linux desktop: `~/.config/Executor/logs/main.log`

(Please don't attach anything else from `~/.executor` — that's where your data and
secrets live. Remove API keys and tokens from anything you paste.)
placeholder: Drag the diagnostics zip or log file here.
- type: checkboxes
id: checks
attributes:
label: Before you submit
options:
- label: I searched the open issues for a duplicate.
required: true
- label: I removed all keys, tokens, and credentials from this report.
required: true
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Feature request
description: Suggest a capability or an improvement for Executor.
title: "[feature] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Tell us the task you want to do and why Executor cannot do it today.
A concrete example helps more than a general proposal.
- type: textarea
id: problem
attributes:
label: The problem
description: What are you trying to do, and where does Executor stop you?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed shape
description: |
The change you want, as concretely as you can describe it. Name the command,
the setting, or the screen where it would live.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives
description: Workarounds you tried, and why they are not sufficient.
- type: dropdown
id: surface
attributes:
label: Where it belongs
description: Select every form of Executor this applies to.
options:
- Executor Cloud
- CLI
- Desktop app
- Self-host (Docker)
- Self-host (Cloudflare)
- Not sure
multiple: true
- type: checkboxes
id: checks
attributes:
label: Before you submit
options:
- label: I searched the open issues for a duplicate.
required: true
30 changes: 30 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!-- Keep this short and plain. Delete the sections that do not apply. -->

## Summary

<!-- What does this change do, and why? One or two sentences. -->

## Linked issue

Fixes #

## Verification

<!--
Say what you ran and what it showed. File paths alone are not evidence.
User-visible work needs a specific e2e run or a browsable dev instance, plus
the recording or trace that shows what to inspect. Add an e2e scenario when
none covers the changed behaviour.
-->

- [ ] `bun run format:check`
- [ ] `bun run lint`
- [ ] `bun run typecheck`
- [ ] `bun run test`
- [ ] e2e — name the scenario, and link the recording or trace:

## Checklist

- [ ] Added a changeset (`bun run changeset`), or this change needs none.
- [ ] Added or updated tests for the new behaviour.
- [ ] No secrets, credentials, or private data in the diff.
Loading
Loading