diff --git a/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.ts b/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.ts index 7a986811d1e..f9044cc79f8 100644 --- a/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.ts +++ b/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.ts @@ -66,6 +66,7 @@ import { isNumber, isString } from '../../../../../../base/common/types.js'; import { ChatConfiguration } from '../../../../chat/common/constants.js'; import { IChatWidgetService } from '../../../../chat/browser/chat.js'; import { TerminalChatCommandId } from '../../../chat/browser/terminalChat.js'; +import { clamp } from '../../../../../../base/common/numbers.js'; // #region Tool data @@ -732,10 +733,11 @@ export class RunInTerminalTool extends Disposable implements IToolImpl { const executeCancellation = store.add(new CancellationTokenSource(token)); // Set up timeout if provided and the setting is enabled (only for foreground) - if (!args.isBackground && args.timeout !== undefined && args.timeout > 0) { + const timeoutValue = args.timeout !== undefined ? clamp(args.timeout, 0, Number.MAX_SAFE_INTEGER) : undefined; + if (!args.isBackground && timeoutValue !== undefined && timeoutValue > 0) { const shouldEnforceTimeout = this._configurationService.getValue(TerminalChatAgentToolsSettingId.EnforceTimeoutFromModel) === true; if (shouldEnforceTimeout) { - timeoutPromise = timeout(args.timeout); + timeoutPromise = timeout(timeoutValue); timeoutPromise.then(() => { if (!executeCancellation.token.isCancellationRequested) { didTimeout = true;