Skip to content

aitools: never prompt a coding agent caller in install - #7477

Merged
anton-107 merged 1 commit into
mainfrom
aitools/no-prompts-for-agents
Nov 12, 2026
Merged

anton-107 merged 1 commit into
mainfrom
aitools/no-prompts-for-agents

Conversation

@anton-107

@anton-107 anton-107 commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #7476.

Stacked on: aitools: accept a Windows shim probe that printed help but exited non-zero

Summary

Coding agents often run commands in a pseudo-terminal (Cursor, Copilot in the VS Code terminal). Stdin looks like a TTY, so databricks aitools install showed its scope select and agent picker, and nobody was there to answer them. The run blocked.

Now a caller that useragent.AgentProvider() identifies as an agent always gets the non-interactive defaults: global scope and every detected agent.

On a terminal, when a prompt would otherwise have run, it prints a note to stderr that names the detected agent by its --agents value (or says more than one was detected) and the missing --scope/--agents flags of databricks aitools install, for example No prompts shown because a coding agent (cursor) was detected. Pass --scope and --agents to databricks aitools install to choose what to install. An agent env var inherited from an agent session can reach a person's shell, and the note tells them why the picker is gone.

The change is scoped to install. Follow-up scope, not in this PR: these prompts still check only cmdio.IsPromptSupported, so an agent in a pseudo-terminal can still block on them.

  • the Proceed? confirm of aitools uninstall
  • the both-scopes prompts of aitools update and aitools uninstall
  • the apps init skills prompt
 install RunE
+  interactive := cmdio.IsPromptSupported(ctx) && useragent.AgentProvider() == ""
-  resolveScopeWithPrompt(ctx)                         // prompted on any TTY
+  resolveScopeWithPrompt(ctx, interactive)
-  selectAgents(ctx, scope, skillsOnly)                // picker on any TTY
+  selectAgents(ctx, scope, skillsOnly, interactive)
-  if !explicit && cmdio.IsPromptSupported(ctx)        // plan summary + confirm
+  if !explicit && interactive
  • The install help text now describes the non-interactive defaults.
  • The install funnel records interactive from the same check, so an agent caller's run is reported as non-interactive.
  • The interactive install tests clear the agent env with isolateAgents, so they keep prompting when the test binary runs under an agent (CLAUDECODE, AI_AGENT, ...). The agent-caller test sets CURSOR_AGENT=1 and fails if the scope prompt, the picker or the plan confirm runs. It also checks that the note is printed on stderr. Further tests check that the note lists only the missing flags, shows the --agents value for the detected agent (copilot for COPILOT_CLI, no name for vscode-agent, "more than one" for nested agents), and stays silent when both flags are passed or there is no terminal.
  • Changelog fragment: .nextchanges/cli/aitools-install-no-prompts-for-agents.md.

Evidence

TestInstallAgentCallerInPTYNeverPrompts: prompts are supported, the caller is an agent, and the scope and picker prompts fail the test if they are called.

  • Before (installPromptsSupported reverted locally to cmdio.IsPromptSupported(ctx)):
    --- FAIL: TestInstallAgentCallerInPTYNeverPrompts (0.00s)
        install_test.go:887: agent picker shown to an agent caller
    
    After (this branch):
    ok  	github.com/databricks/cli/cmd/aitools	0.195s
    

Build, unit and acceptance tests for the aitools packages, lint, fmt and go vet for GOOS=windows/darwin pass on this branch. Nothing was run on a real Windows or macOS machine.

Merge Danger

Door: two-way

Reverting is one small commit. Nothing persistent changes.

Blast Radius: small

  • Behavior change: when an agent env var is set (for example CLAUDECODE, AI_AGENT), a person typing databricks aitools install in a terminal no longer sees prompts. The run installs for every detected agent in global scope and prints a note explaining why. To pick, pass --scope/--agents.
  • Exit codes are unchanged, and there are no new network calls.
  • Agent detection comes from the SDK's useragent.AgentProvider(). Agents it does not recognize still get prompts on a TTY.

This pull request and its description were written by Isaac.

@anton-107
anton-107 requested review from a team and lennartkats-db as code owners November 11, 2026 14:26
@anton-107 anton-107 added the ai-auto PRs made by AI loops & factories, label Nov 11, 2026
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 5601cd2 to 2c28258 Compare November 11, 2026 14:33
@anton-107
anton-107 requested a review from a team as a code owner November 11, 2026 14:33
@anton-107
anton-107 requested a review from rauchy November 11, 2026 14:33
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 3af19e5 to 2711bbe Compare November 11, 2026 14:33
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: e9edeb2

Run: 43313294976

Env 🔄​flaky 💚​RECOVERED ✅​pass 🙈​skip Time
💚​ aws linux-2core-8gb 1 270 15 12:12
🔄​ aws-windows-latest-4core-16gb 1 1 271 13 12:21
💚​ azure linux-2core-8gb 1 269 15 14:13
🔄​ azure-windows-latest-4core-16gb 2 1 269 13 10:05
💚​ gcp linux-2core-8gb 1 270 15 13:03
🔄​ gcp-windows-latest-4core-16gb 1 1 271 13 11:58
Test Name aws linux-2core-8gb aws-windows-latest-4core-16gb azure linux-2core-8gb azure-windows-latest-4core-16gb gcp linux-2core-8gb gcp-windows-latest-4core-16gb
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🔄​ TestSyncFullFileSync ✅​p 🔄​f ✅​p ✅​p ✅​p ✅​p
🔄​ TestSyncIncrementalSyncPythonNotebookToFile ✅​p ✅​p ✅​p 🔄​f ✅​p 🔄​f
🔄​ TestSyncNestedFolderDoesntFailOnNonEmptyDirectory ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
Top 25 slowest tests (at least 2 minutes):
duration env testname
4:17 gcp-windows-latest-4core-16gb TestImportDirWithOverwriteFlag
4:17 azure-windows-latest-4core-16gb TestFilerWorkspaceFilesExtensionsReadDir
3:57 azure linux-2core-8gb TestFilerReadDir/workspace_files
3:53 aws-windows-latest-4core-16gb TestAccept
3:49 azure-windows-latest-4core-16gb TestAccept
3:47 azure linux-2core-8gb TestAccept
3:47 aws linux-2core-8gb TestAccept
3:47 gcp linux-2core-8gb TestWorkspaceFilesExtensionsNotebooksAreNotStatAsFiles
3:43 gcp linux-2core-8gb TestAccept
3:40 aws-windows-latest-4core-16gb TestFilerWorkspaceFilesExtensionsRead
3:37 gcp-windows-latest-4core-16gb TestAccept
3:30 gcp-windows-latest-4core-16gb TestFilerWorkspaceFilesExtensionsRead
3:21 gcp linux-2core-8gb TestFilerWorkspaceFilesExtensionsStat
3:10 azure linux-2core-8gb TestFilerWorkspaceFilesExtensionsReadDir
3:05 gcp-windows-latest-4core-16gb TestFilerRecursiveDelete/workspace_files
2:40 aws-windows-latest-4core-16gb TestFilerWorkspaceFilesExtensionsStat
2:33 aws linux-2core-8gb TestFilerWorkspaceFilesExtensionsStat
2:26 aws linux-2core-8gb TestImportDirDoesNotOverwrite
2:24 aws-windows-latest-4core-16gb TestFilerWorkspaceFilesExtensionsReadDir
2:23 aws-windows-latest-4core-16gb TestImportDirWithOverwriteFlag
2:23 gcp-windows-latest-4core-16gb TestExportDir
2:14 gcp linux-2core-8gb TestFilerRecursiveDelete/workspace_files_extensions
2:10 aws linux-2core-8gb TestFilerReadDir/workspace_files
2:04 azure-windows-latest-4core-16gb TestFilerRecursiveDelete/workspace_files
2:01 azure-windows-latest-4core-16gb TestImportDirDoesNotOverwrite

@simonfaltum simonfaltum left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated review from simonfaltum's review agent (pr-review skill) at 2711bbe. Each finding was verified against the code; simonfaltum may follow up.

Not approving yet: 2 open design questions.

This PR stops databricks aitools install from showing its scope select, agent picker and confirm when a coding agent runs it in a pseudo-terminal, so agent runs get the non-interactive defaults instead of hanging. The fix is small and correct for install, and all CI checks pass. Nothing is blocking. The main suggestions are to test the real agent detection through the environment (isolateAgents) instead of a stubbed seam and package-wide TestMain, and to keep the funnel's interactive field in line with the new behavior. Two scope questions are open: whether uninstall, update and apps init should get the same treatment, and what an agent caller should get by default.

Questions

  1. This makes install skip prompts for agent callers, but aitools uninstall (the Proceed? confirm, uninstall.go:70), update/uninstall with both scopes installed (scope.go:207 and 257) and the apps init skills prompt (libs/aitools/agents/recommend.go:25) still check only cmdio.IsPromptSupported, so an agent in a pseudo-terminal can still hang on them. Is install-only the intended scope? If so, could the PR description say so? Or should the check move into a shared helper (or into cmdio's prompt capability) so these prompts behave the same way?
  2. With no --agents, an agent caller in a pseudo-terminal now gets every detected agent (config dir or CLI on PATH) installed at global scope, with no plan summary or confirm. Agent detection reads inherited env vars, including the generic AGENT/AI_AGENT, so a person in a shell started from an agent session also loses the picker without explanation. Did you consider defaulting to just the calling agent (agents.CallingAgent()), or printing a short note saying why no prompt was shown and pointing to --scope/--agents? Or is installing for every detected agent the intended behavior here?

Comments outside the changed lines

  • [nit] .github/PULL_REQUEST_TEMPLATE.md: The description uses ## Summary / ## Evidence / ## Merge Danger, but .agents/skills/pr-checklist/SKILL.md asks for the .github/PULL_REQUEST_TEMPLATE.md headings (## Changes, ## Why, ## Tests) in that order and names ## Summary as one not to add. The content maps directly: Summary to Changes/Why, Evidence to Tests, and the Merge Danger notes fold into Why.

Comment thread cmd/aitools/install_test.go Outdated
Comment on lines +890 to +892
origAgent := callerIsAgent
t.Cleanup(func() { callerIsAgent = origAgent })
callerIsAgent = func() bool { return true }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nice to have] The new test overrides callerIsAgent, and TestMain pins it to false for every other test, so the real check, useragent.AgentProvider() != "" (install.go:30), never runs in a test. A flipped comparison, or a change to agents.CallingAgent() != nil (which returns nil for multiple and vscode-agent), would pass. The pin also silently overrides tests that set an agent env on purpose, such as isolateAgents(t, "CURSOR_AGENT", "1") in funnel_test.go:87, which still runs install as a human. Suggest dropping the seam and main_test.go. Call isolateAgents(t, "VSCODE_AGENT", "1") (or "CURSOR_AGENT", "1") at the start of the new test, and isolateAgents(t) in the existing interactive install tests, the way the interactive funnel tests already do. isolateAgents wraps testutil.SetAgentEnv, which also resets the SDK's agent cache.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in d0c5cc6. Dropped the callerIsAgent seam and main_test.go; installPromptsSupported now calls useragent.AgentProvider() == "" directly. The new test starts with isolateAgents(t, "CURSOR_AGENT", "1"), and TestInstallInteractivePickerAndConfirm / TestInstallInteractivePickerErrorPropagates call isolateAgents(t). Checked that flipping the comparison fails all three tests, and that the package passes when run with CLAUDECODE/AI_AGENT set.

Comment thread cmd/aitools/install.go Outdated
funnel.step(ctx, protos.AitoolsCommandStepFlagsValidated)

scope, err := resolveScopeWithPrompt(ctx, projectFlag, globalFlag)
interactive := installPromptsSupported(ctx)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nice to have] An agent caller in a PTY now takes install's non-interactive path, but startFunnel still records interactive: cmdio.IsPromptSupported(ctx) (telemetry.go:311). Those runs show up as interactive installs with a PLAN_CONFIRMED step and no confirm, which skews interactive vs. non-interactive funnel numbers such as picker drop-off and cancel rates. Either record installPromptsSupported(ctx) for install (it does not depend on flags, so it can be computed before startFunnel), or update the proto comment at aitools_events.go:133 to say the field ignores agent detection.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in d0c5cc6. startFunnel takes interactive as a parameter now. Install passes installPromptsSupported(ctx), computed before startFunnel, and the other subcommands still pass cmdio.IsPromptSupported. The new test asserts that the STARTED event has Interactive == false for an agent caller.

Comment thread cmd/aitools/install.go Outdated
// terminal) where stdin looks like a TTY but nobody can answer a TUI prompt, so
// an agent caller always gets the documented non-interactive defaults.
func installPromptsSupported(ctx context.Context) bool {
return cmdio.IsPromptSupported(ctx) && !callerIsAgent()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] uninstall.go:67-69 justifies its prompt rule as "matching how install only prompts on a TTY". That stops being true with this change: install now also skips prompts for agent callers on a TTY. Please update that comment, whichever way the uninstall/update prompts end up being handled.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in d0c5cc6. I removed the "matching how install only prompts on a TTY" clause, so the comment now just says non-interactive runs proceed without a prompt.

Comment thread cmd/aitools/install_test.go Outdated
Comment on lines +97 to +104
// stubLegacyCleanup skips the raw-skill cleanup that follows a plugin install;
// the test agents have no config dir for it to inspect.
func stubLegacyCleanup(t *testing.T) {
t.Helper()
orig := cleanupLegacyFn
t.Cleanup(func() { cleanupLegacyFn = orig })
cleanupLegacyFn = func(context.Context, *agents.Agent, string) error { return nil }
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] The comment on stubLegacyCleanup says the test agents have no config dir, but setupTestAgents creates ~/.claude and ~/.cursor (install_test.go:129-130). The real RemoveLegacyRawSkills only removes entries recorded in the temp HOME's install state, and a failure is only logged at debug level (install.go:623). TestInstallPluginFirstDefault takes the same non-interactive path without a stub. Consider dropping the helper and its call. If it is needed, fix the comment to give the real reason.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed in d0c5cc6. You were right: the test passes without it, because cleanup only removes what the temp HOME's install state recorded.

Comment on lines +884 to +888
origPrompt := promptAgentSelection
t.Cleanup(func() { promptAgentSelection = origPrompt })
promptAgentSelection = func(context.Context, []agentChoice) ([]*agents.Agent, error) {
t.Fatal("agent picker shown to an agent caller")
return nil, nil

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] The test fails fast if the scope prompt or the agent picker runs, but promptProceed stays the real huh.NewConfirm().Run(), which reads the real terminal. If the confirm gate at install.go:241 regressed alone, the test would hit the real widget and fail with an opaque prompt error (or block) instead of naming the regression. Stub promptProceed to t.Fatal("plan confirm shown to an agent caller") too.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in d0c5cc6. The test now stubs promptProceed to t.Fatal("plan confirm shown to an agent caller").

Comment thread cmd/aitools/install.go Outdated
Comment on lines +37 to +40
// installPromptsSupported reports whether install may show its prompts. Agents
// often run commands in a pseudo-terminal (Cursor, Copilot in the VS Code
// terminal) where stdin looks like a TTY but nobody can answer a TUI prompt, so
// an agent caller always gets the documented non-interactive defaults.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] .agents/rules/comments.md asks for source reference URLs when detecting environment variables, and the new detection cites none. Please link the SDK's detection list next to callerIsAgent/installPromptsSupported, as libs/aitools/agents/calling.go and hint.go do: https://github.com/databricks/databricks-sdk-go/blob/main/useragent/agent.go. The link also documents which agents are covered; for example, Copilot in VS Code is detected only via VSCODE_AGENT, which VS Code 1.121+ sets.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in d0c5cc6. The installPromptsSupported comment now links the SDK's agent detection list (useragent/agent.go in databricks-sdk-go) as the source of the agent env vars.

@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 2c28258 to 4a70459 Compare November 11, 2026 16:53
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 2711bbe to 95f78a5 Compare November 11, 2026 16:53
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 4a70459 to c162e8e Compare November 11, 2026 16:54
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 95f78a5 to 668167b Compare November 11, 2026 16:54
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from c162e8e to 0c0d208 Compare November 11, 2026 16:57
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch 2 times, most recently from eef5046 to d0c5cc6 Compare November 11, 2026 17:26
@anton-107

Copy link
Copy Markdown
Contributor Author

On the PR template nit: I'm keeping the Summary / Evidence / Merge Danger layout. Every PR in this stack uses it, so the stack reads the same from one PR to the next, and Evidence carries the before/after test output that ## Tests would hold. The two questions in the review are still open and I'll answer them separately.

@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch 2 times, most recently from 873e0e0 to eabdd30 Compare November 11, 2026 19:28
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from d0c5cc6 to 2e61f20 Compare November 11, 2026 19:30
@anton-107

Copy link
Copy Markdown
Contributor Author

Answers to the two questions in the review, as of 2e61f20:

  1. Install-only is deliberate. uninstall and update (the Proceed? confirm and the both-scopes prompt) and the apps init skills prompt keep the TTY-only cmdio.IsPromptSupported check for now. The PR description and commit message now say so. A shared helper that covers those prompts can come in a follow-up.

  2. An agent caller still gets every detected agent. When install skips its prompts on a terminal because a coding agent was detected, it now prints a note to stderr: "No prompts shown because a coding agent was detected. Pass --agents and --scope to choose what to install." The note is printed only when a scope or agent prompt would otherwise have run, so it does not appear when both flags are passed, with --output json, or without a terminal. TestInstallAgentCallerInPTYNeverPrompts checks for the note on stderr. The help text and the changelog fragment mention it too. No acceptance output changed, because acceptance runs have no terminal.

Also in this push: a rebase onto the updated #7476. Install now validates flags before the scope prompt, and interactive is threaded through that flow.

@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from eabdd30 to e158591 Compare November 11, 2026 19:30
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 2e61f20 to 6251610 Compare November 11, 2026 19:30
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from e158591 to f6b4ec8 Compare November 11, 2026 20:07
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 6251610 to bc7b149 Compare November 11, 2026 20:07
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from f6b4ec8 to 3108ec5 Compare November 11, 2026 21:04
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 7577e8d to 2f670b2 Compare November 12, 2026 09:11
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from c9b6d13 to 6731eb1 Compare November 12, 2026 09:19
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 2f670b2 to c2d7335 Compare November 12, 2026 09:19
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 6731eb1 to a7cd2a4 Compare November 12, 2026 10:01
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from c2d7335 to 8c2aca6 Compare November 12, 2026 10:01
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from a7cd2a4 to d0cb9df Compare November 12, 2026 10:26
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 8c2aca6 to 7a33789 Compare November 12, 2026 10:43

@simonfaltum simonfaltum left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Approval from simonfaltum's review agent at 7a33789, on Simon's decision.

The design questions from the earlier automated reviews no longer block this PR: your answers are accepted, and any still-open ones are non-blocking. The changes since the last automated review (42b3163 → 7a33789) address its comments.

Comment thread cmd/aitools/install_test.go Outdated
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
setupAgentCallerInstall(t)
isolateAgents(t, tc.env...)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] setupAgentCallerInstall sets HOME, PATH and DATABRICKS_SKILLS_REF, and then this isolateAgents call clears the whole environment (SetAgentEnv calls os.Clearenv). So each subtest runs with no HOME and no PATH, and no agent is detected. The test passes only because the note prints before agent detection. Pass the agent env pairs to setupAgentCallerInstall, so that isolateAgents runs once and first. Then also assert the install, as TestInstallAgentCallerNoteSilent does with require.Len(t, *plugins, 1).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, fixed in 3027224. setupAgentCallerInstall now takes the agent env pairs and calls isolateAgents once, first, so the HOME, PATH and DATABRICKS_SKILLS_REF it sets afterwards survive. TestInstallAgentCallerNoteNamesAgent passes each case's env through the helper, and its cases now also assert the install (require.Len(t, *plugins, 1)). The other callers pass CURSOR_AGENT=1. This is a test-only change; install's behavior is unchanged.

@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from d0cb9df to 1988e05 Compare November 12, 2026 12:27
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 7a33789 to ce44e54 Compare November 12, 2026 12:28
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 1988e05 to 735616f Compare November 12, 2026 12:31
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from ce44e54 to 88d00f0 Compare November 12, 2026 12:31
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 735616f to e26c489 Compare November 12, 2026 12:31
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch 2 times, most recently from 14c2f8d to 3027224 Compare November 12, 2026 12:34
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from e26c489 to b28c0c8 Compare November 12, 2026 12:36
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 3027224 to 7586075 Compare November 12, 2026 12:36
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from b28c0c8 to c3363cb Compare November 12, 2026 12:37
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 7586075 to 055533b Compare November 12, 2026 12:37
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from c3363cb to 3daa09d Compare November 12, 2026 16:38
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 055533b to 22ff761 Compare November 12, 2026 16:38
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 3daa09d to 7342f80 Compare November 12, 2026 17:13
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 22ff761 to 43056d1 Compare November 12, 2026 17:13
@anton-107
anton-107 force-pushed the aitools/windows-shim-probe branch from 7342f80 to 2326b6b Compare November 12, 2026 21:29
@anton-107
anton-107 changed the base branch from aitools/windows-shim-probe to main November 12, 2026 21:36
Coding agents often run commands in a pseudo-terminal (Cursor, Copilot in the VS Code terminal). Stdin looks like a TTY, so `databricks aitools install` showed its scope select and agent picker, and nobody was there to answer them. The run blocked.

Now a caller that `useragent.AgentProvider()` identifies as an agent always gets the non-interactive defaults: global scope and every detected agent.

On a terminal, when a prompt would otherwise have run, it prints a note to stderr that names the detected agent by its `--agents` value (or says more than one was detected) and the missing `--scope`/`--agents` flags of `databricks aitools install`, for example `No prompts shown because a coding agent (cursor) was detected. Pass --scope and --agents to databricks aitools install to choose what to install.` An agent env var inherited from an agent session can reach a person's shell, and the note tells them why the picker is gone.

The change is scoped to install. These prompts still check only `cmdio.IsPromptSupported` and are left for a follow-up: the `Proceed?` confirm of `uninstall`, the both-scopes prompts of `update` and `uninstall`, and the `apps init` skills prompt.

```diff
 install RunE
+  interactive := cmdio.IsPromptSupported(ctx) && useragent.AgentProvider() == ""
-  resolveScopeWithPrompt(ctx)                         // prompted on any TTY
+  resolveScopeWithPrompt(ctx, interactive)
-  selectAgents(ctx, scope, skillsOnly)                // picker on any TTY
+  selectAgents(ctx, scope, skillsOnly, interactive)
-  if !explicit && cmdio.IsPromptSupported(ctx)        // plan summary + confirm
+  if !explicit && interactive
```

- The `install` help text now describes the non-interactive defaults.
- The install funnel records `interactive` from the same check, so an agent caller's run is reported as non-interactive.
- The interactive install tests clear the agent env with `isolateAgents`, so they keep prompting when the test binary runs under an agent (`CLAUDECODE`, `AI_AGENT`, ...).
- Changelog fragment: `.nextchanges/cli/aitools-install-no-prompts-for-agents.md`.

Co-authored-by: Isaac <no-reply@databricks.com>
@anton-107
anton-107 force-pushed the aitools/no-prompts-for-agents branch from 43056d1 to e9edeb2 Compare November 12, 2026 21:44
@anton-107
anton-107 added this pull request to the merge queue Nov 12, 2026
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

❌ Integration test report

Commit: db52460

Run: 43319477808

Env ❌​FAIL 🟨​KNOWN 🤯​MISS 💚​RECOVERED ✅​pass 🙈​skip Time
❌​ aws linux-2core-8gb 50 41 8 1466 1286 355:46
❌​ azure linux-2core-8gb 61 1 11 1470 1296 335:42
❌​ gcp linux-2core-8gb 43 4 8 1495 1294 349:24
123 interesting tests: 75 FAIL, 36 MISS, 8 RECOVERED, 4 KNOWN
Test Name aws linux-2core-8gb azure linux-2core-8gb gcp linux-2core-8gb
🟨​ TestAccept 🤯​M 🟨​K 🟨​K
❌​ TestAccept/bundle/invariant/delete_idempotent ❌​F ✅​p ❌​F
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/READPLAN= ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/invariant/no_drift ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ❌​F ✅​p ✅​p
🤯​ TestAccept/bundle/python/feature_specs-support 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/feature_specs-support/DMS=/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/feature_specs-support/DMS=true/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/features-support 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/features-support/DMS=/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/features-support/DMS=true/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/mutator-permissions-owner-5682 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=/PYDAB_VERSION=0.266.0 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=true/PYDAB_VERSION=0.266.0 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=true/PYDAB_VERSION=current 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/quiet-levels 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/quiet-levels/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/resource_deps/remote_field_storage_location 🤯​M 🙈​s 🙈​s
🤯​ TestAccept/bundle/resource_deps/remote_field_storage_location/DMS=true 🤯​M
❌​ TestAccept/bundle/resources/apps/inline_config 🤯​M ✅​p ❌​F
❌​ TestAccept/bundle/resources/apps/inline_config/DMS= ✅​p ✅​p ❌​F
🤯​ TestAccept/bundle/resources/apps/inline_config/DMS=true 🤯​M ✅​p ✅​p
🟨​ TestAccept/bundle/resources/apps/lifecycle-started 🤯​M 💚​R 🟨​K
💚​ TestAccept/bundle/resources/apps/lifecycle-started-omitted 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=true 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-toggle 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-toggle/DMS= 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-toggle/DMS=true 💚​R 💚​R 💚​R
🟨​ TestAccept/bundle/resources/apps/lifecycle-started/DMS= 🤯​M 💚​R 🟨​K
🟨​ TestAccept/bundle/resources/apps/lifecycle-started/DMS=true 🤯​M 💚​R 🟨​K
❌​ TestAccept/bundle/resources/dashboards/serialized-inline ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/dashboards/serialized-inline/DMS=/READPLAN=1 ✅​p ❌​F ✅​p
🤯​ TestAccept/bundle/resources/feature_specs/remote-delete 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/resources/feature_specs/remote-delete/DMS= 🤯​M ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege/DMS=true ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/pipelines/update ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/pipelines/update/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_branches/update_protected ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_protected/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_protected/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_catalogs/basic ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_catalogs/basic/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_databases/replace_existing ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_databases/replace_existing/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_databases/update ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_databases/update/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_databases/update/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_pg_settings ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_pg_settings/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_pg_settings/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_suspend_timeout ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_suspend_timeout/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_suspend_timeout/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/add_default_endpoint_settings ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/add_default_endpoint_settings/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/add_default_endpoint_settings/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/remove_history_retention ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/remove_history_retention/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/remove_history_retention/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_default_endpoint_suspend ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_default_endpoint_suspend/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_default_endpoint_suspend/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_display_name ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_display_name/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_display_name/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_history_retention ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_history_retention/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_projects/update_history_retention/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_roles/basic ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_roles/basic/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_roles/replace_existing ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_roles/replace_existing/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_roles/update ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_roles/update/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_roles/update/DMS=true ❌​F ❌​F ❌​F
💚​ TestAccept/bundle/resources/postgres_synced_tables/recreate 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/postgres_synced_tables/recreate/DMS= 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/postgres_synced_tables/recreate/DMS=true 💚​R 💚​R 💚​R
❌​ TestAccept/bundle/resources/secret_scopes/basic ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/secret_scopes/basic/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/secrets/remove-expire-time ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/secrets/remove-expire-time/DMS=true ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/volumes/comment_out_of_band ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/volumes/comment_out_of_band/DMS= ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/volumes/set-storage-location ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/volumes/set-storage-location/DMS=true ✅​p ❌​F ✅​p
🤯​ TestCIUniqueName 🤯​M ✅​p ✅​p
🤯​ TestClassifyRegression 🤯​M ✅​p ✅​p
🤯​ TestDbrAcceptance 🤯​M 🙈​s 🙈​s
🤯​ TestInprocessMode 🤯​M 🙈​s 🙈​s
🤯​ TestInvariantConfigsCoverage 🤯​M ✅​p ✅​p
🤯​ TestLeafTests 🤯​M ✅​p ✅​p
🤯​ TestParseTestOutput 🤯​M ✅​p ✅​p
🤯​ TestRenderRegressionReport 🤯​M ✅​p ✅​p
🤯​ TestRenderRegressionReportDedupesIdenticalFailures 🤯​M ✅​p ✅​p
🤯​ TestSubsetApproximatesPct 🤯​M ✅​p ✅​p
🤯​ TestSubsetChangedAlwaysRuns 🤯​M ✅​p ✅​p
🤯​ TestSubsetChangedVariantFilter 🤯​M ✅​p ✅​p
🤯​ TestSubsetChangedVariantFilterAlternatives 🤯​M ✅​p ✅​p
🤯​ TestSubsetDisabled 🤯​M ✅​p ✅​p
🤯​ TestSubsetPctBoundaries 🤯​M ✅​p ✅​p
🤯​ TestSubsetSeedChangesSelection 🤯​M ✅​p ✅​p
🤯​ TestSubsetSeedDeterministic 🤯​M ✅​p ✅​p
🤯​ TestSubsetVariantsIndependent 🤯​M ✅​p ✅​p
Top 50 slowest tests (at least 2 minutes):
duration env testname
16:33 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
15:06 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
11:33 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:08 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=
10:01 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:55 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
9:29 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
9:16 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
9:12 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1
8:48 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=true
8:44 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/READPLAN=1
8:30 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/serverless/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN=
8:14 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
8:07 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
7:55 aws linux-2core-8gb TestAccept/bundle/apps/compute_size/DMS=
7:47 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=vector_search_index.yml.tmpl/READPLAN=1
7:43 azure linux-2core-8gb TestAccept/bundle/resources/registered_models/basic/DMS=true
7:36 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
7:34 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=schema_empty_grants.yml.tmpl/READPLAN=
7:10 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
7:01 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
6:59 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=job_with_task.yml.tmpl/READPLAN=1
6:57 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=app.yml.tmpl/READPLAN=
6:53 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
6:53 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/classic/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN=
6:47 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
6:46 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
6:45 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
6:45 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=
6:43 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/serverless/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN=1
6:42 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/classic/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN=1
6:42 aws linux-2core-8gb TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=vector_search_index.yml.tmpl/READPLAN=1
6:41 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
6:37 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/classic/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN=
6:34 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/READPLAN=1
6:34 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
6:30 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=secret_scope_default_backend_type.yml.tmpl/READPLAN=
6:29 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=genie_space.yml.tmpl/READPLAN=1
6:26 azure linux-2core-8gb TestAccept/bundle/resources/secret_scopes/delete_scope/DMS=true
6:23 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/serverless/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN=
6:22 aws linux-2core-8gb TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=feature_spec.yml.tmpl/READPLAN=1
6:19 aws linux-2core-8gb TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
6:16 aws linux-2core-8gb TestAccept/pipelines/run/refresh-flags
6:08 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=schema_uppercase_name.yml.tmpl/READPLAN=1
6:07 gcp linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
6:06 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
6:02 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=secret_scope.yml.tmpl/READPLAN=1
5:56 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/classic/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN=1
5:52 gcp linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=volume_path_job_ref.yml.tmpl/READPLAN=
5:51 aws linux-2core-8gb TestAccept/bundle/deploy/spark-jar-task/DMS=

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-auto PRs made by AI loops & factories,

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants