fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(grok): stop Working after 10 minutes of silence - #7215

Closed
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall
Closed

fix(grok): stop Working after 10 minutes of silence#7215
gbarros-dev wants to merge 1 commit into
pingdotgg:mainfrom
gbarros-dev:fix/grok-acp-stall

Conversation

@gbarros-dev

@gbarros-devgbarros-dev commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes#7210.

A Grok turn sat on Working for 74 minutes after the last tool finished. The stream died mid-reasoning. No turn_ended. The UI never gave up.

After ten minutes with no tokens, tools, or terminal events, the turn now fails and Working stops. The timer does not run during tools, approvals, or user input. Existing threads and other clients already share that turn state.

Most of the diff is the watchdog plus tests.

Validation: vp test run apps/server/src/provider/Layers/GrokAdapter.test.ts (25 passed).

Created with GPT-5.6 Luna via Codex CLI, reviewed and finalized in the T3 Code Codex harness.

Note

Fix stalled ACP turns in GrokAdapter by adding a liveness watchdog

  • Adds a liveness watchdog to GrokAdapter.ts that monitors turn activity and fails stalled turns after an inactivity deadline, but only after ACP has emitted observable progress (content, plan update, tool activity, or user input resolution).
  • Pauses the watchdog during pending approvals and user-input requests, and resumes it on resolution; refreshes the liveness window on steering turns and plan updates.
  • Uses a longer inactivity timeout while tool calls are in progress, tracked via an active tool call set.
  • Extends acp-mock-agent.ts with env-controlled stall modes to simulate hangs after content, plan updates, active tools, or ask_user_question responses for testing.
  • Behavioral Change: turns that stall after emitting any progress will now be failed with a turn completion event after the inactivity deadline; turns silent before any ACP progress are not timed out.

Macroscope summarized fa5736c.

@coderabbitai

coderabbitaiBot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b8fdbae-3b9b-414d-9f51-8addc2aed5ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts Outdated
@gbarros-dev
gbarros-dev marked this pull request as ready for review August 16, 2026 14:29
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR adds a watchdog mechanism that terminates stalled Grok ACP turns after configurable timeouts. While well-tested, it introduces significant runtime behavior changes to core session management and is authored by someone new to this file.

You can customize Macroscope's approvability policy. Learn more.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts

@cursorcursorBot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 26f6529. Configure here.

Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
Comment threadapps/server/src/provider/Layers/GrokAdapter.ts
@gbarros-devgbarros-dev changed the title fix(grok): settle stalled ACP turnsfix(grok): stop Working after 10 minutes of silenceAug 16, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

I am closing this because #8358 has landed in main and covers the same Grok stalled-turn watchdog behavior. I checked the current implementation and did not find any remaining change from this PR that we still need to merge.

Thank you for putting this together. The closure is only because the work is now covered elsewhere, not because there was a problem with your contribution.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grok turn stalls mid-reasoning: no tokens for 70+ minutes, UI stays Working, no turn_ended

2 participants

@gbarros-dev@t3dotgg