Skip to content

Don't Automatically Scroll Chat Window #7659

Closed as not planned
Closed as not planned

Description

@JuliaBonita

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

It's very frustating to never be able to comfortably and fully read what the agent is generating until after they're completely finished, which can take many minutes in some cases. This wastes a lot of the user's time by forcing the user to wait for long periods of time until the agent has finished generating their entire response. Collectively during a given day, this can waste an hour or more of our time.

For example, I tell the agent to perform a task. The agent starts working. The task might be a complex, multi-step implementation plan that takes 10 minutes or more. During that period, I'm constantly trying to fight against the auto-scroll behavior of the OC window to read what the agent is doing.

In this context, "fight against the auto-scroll" means this: Start reading new agent output, then agent generates more output, window scrolls automatically to latest agent output, now I need to scroll back up and find my previous place in the chat stream, agent generates more output and window scrolls even farther away from where I was previously reading, now I need to scroll back up even farther again, etc.......

This is very frustrating because agents often do stupid or undesirable things, but if I can't read and observe what they are doing quickly, there's no opportunity to stop them and give them corrective guidance. This also wastes a huge amount of time during a day because I can't prevent the agents from making time-wasting mistakes and going off on rabbit trails that would be much easier to prevent or correct if I could simply read and observe their output sooner.

So there should be a way to disable the auto-scroll behavior so that the user can read what the agents are generating sooner.

Activity

  1. added
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    on Jan 10, 2026
  2. github-actions commented on Jan 10, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    Feel free to ignore if none of these address your specific case.

  3. github-actions commented on Mar 25, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 90 days of no activity. If the issue is still relevant please open a new one.

  4. JuliaBonita commented on Mar 25, 2026

    @JuliaBonita
    Author

    This has not been fixed yet. Please don't close it.

  5. alexzoo commented on Mar 26, 2026

    @alexzoo

    This issue is really frustrating to deal with. The auto-scrolling behavior breaks the user experience significantly. Please prioritize fixing this as soon as possible!

  6. kreasteve commented on Apr 18, 2026

    @kreasteve

    A workaround that works for me on opencode 1.4.11 (macOS, iTerm2): #7648 (comment)

  7. x4dr commented on Apr 29, 2026

    @x4dr

    still relevant - how am i to review the changes, when i have to wait until its completely done, scroll up, and then read downwards. unless i am scrolled all the way to the bottom, more text streaming in shouldn't move my view

  8. JaviOverflow commented on Apr 30, 2026

    @JaviOverflow

    please give more priority to this, workaround #7659 (comment) doesn't work for me either

  9. removed
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    webRelates to opencode on web / desktop
    on May 3, 2026
  10. DavidKirschey commented on May 16, 2026

    @DavidKirschey

    Super annoying! Please solve this!

    I have a big problem in my chat window while the Model is still working. If I try to read the former text or thinking parts, every ~~30 seconds my reading area scrolls somewhere else so that I need to scroll down to that position where I was reading again. As finding the position takes around twenty seconds, I only have ten seconds to read until it jumps again.

    Plugins
    No response

    OpenCode version
    newest

    Steps to reproduce
    Fire a prompt to the model And let it work.
    Scroll up with your mouse wheel and read something from the former output.
    After less than three sentences you cannot read anymore and you are somewhere else in the long conversation.
    Scroll down to find the reading position again.
    Continue reading until the next time.
    Screenshot and/or share link
    https://github.com/user-attachments/assets/076b0708-408b-49a2-987c-a23d8a2380ac
    https://github.com/user-attachments/assets/d83fbc82-5c9a-4311-884a-03e1a58d8f80

  11. danxtshake commented on Jun 8, 2026

    @danxtshake

    To scroll to the bottom of the conversation in the OpenCode CLI, press the End key

  12. Lauri-Nomme commented on Jun 8, 2026

    @Lauri-Nomme

    @danxtshake did you read the issue description?

  13. mengmann commented on Jul 2, 2026

    @mengmann

    why was it closed as not planned? This is a real existing issue which impacts user experience.

  14. pisze-programy commented on Aug 14, 2026

    @pisze-programy

    Hey, just give it to your agent; ll handle it

    opencode's chat works like a live news ticker: when the agent generates text, the window slides down to show the latest line. That's good when you're at the bottom. The problem (issue #7659): when you scroll up to read, the window keeps yanking you back down — like a book someone keeps turning pages on.

    The chat's auto-scroll is hardcoded via the <scrollbox>'s sticky scroll — stickyScroll={true} + stickyStart="bottom" in packages/tui/src/routes/session/index.tsx, powered by @opentui/core's ScrollBox (ScrollBox.ts). The TUI config only exposes scroll_speed / scroll_acceleration, so users can't turn the follow behavior off.

    1. Clamp-based re-stick — syncManualScrollState() reset _hasManualScroll = false during content updates (_isApplyingStickyScroll). Whenever streamed content momentarily shrank (collapsing tool output, snapshot churn), the scroll position got clamped to the (new) bottom and the view silently re-stuck.
    2. Aggressive re-engage — recalculateBarProps() re-engaged sticky when the user was within 1 line of the bottom (scrollTop >= maxScrollTop - 1), pulling the view past where they were reading.

    The patch (local build 1.xx.xx-localscroll)

    In @opentui/core ScrollBox:

    • syncManualScrollState(): early-return inside _isApplyingStickyScroll — no more _hasManualScroll reset from content-size clamps.
    • recalculateBarProps(): removed the isAtStickyReengagePoint auto-re-engage branch. Follow now resumes only when the user actually scrolls back to the bottom (syncManualScrollState on real input handles that).

    In opencode TUI:

    • packages/tui/src/routes/session/index.tsx: scrollbar_visible default false → true (visible scrollbar = position indicator).

    Kept the existing streaming markdown fix. Built from the v1.xx.xx tag (bun run build --single in packages/opencode, OPENCODE_VERSION=1.xx.xx-localscroll).

    Resulting behavior

    • At the bottom → viewport follows the latest output.
    • Scroll up (even a couple of lines) → scroll stays put; no yanking, even when content temporarily shrinks and clamps the position.
    • Scroll back to the very bottom → follow resumes.
    • Scrollbar visible by default.

    Suggested upstream change (proper PR)

    Same idea in source:

    1. @opentui/core ScrollBox.ts: apply the two fixes above (remove clamp re-stick + auto re-engage), then add a config flag to opencode's TUI config (e.g. scroll_sticky: boolean, default true) wired to stickyScroll in session/index.tsx.

    Links

  15. PixClix commented on Sep 22, 2026

    @PixClix

    Please add a way to stop the auto scroll. Its annoying as hell.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions