Built-in browser pane cannot reach private/internal origins — request an opt-in per-project allowlist and a clearer error

Status Open
Reported on v2.1.143
Maintainer reply None cached
Activity 0 comments · opened Jul 29, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

<div role="region" aria-label="Primary pane" class="dframe-pane dframe-pane-primary min-w-0 relative flex flex-col" data-row="0" data-pos="0:0" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; display: flex; min-width: 0px; flex-direction: column; will-change: transform; min-height: 0px; transition: filter 0.12s ease-out; grid-area: 1 / 1 / -1; color: rgb(11, 11, 11); font-family: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif, ui-sans-serif, system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(252, 252, 251); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; --pane-col: 1;"><div class="flex-1 min-h-0 flex flex-col overflow-x-clip overflow-y-auto -ml-2 pl-2" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 0px -8px; padding: 0px 0px 0px 8px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: flex; min-height: 0px; flex: 1 1 0%; flex-direction: column; overflow: clip auto;"><div class="relative flex-1 min-h-0 flex flex-col" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; display: flex; min-height: 0px; flex: 1 1 0%; flex-direction: column; --df-header-h: 0px;"><div class="epitaxy-root select-none h-full w-full flex flex-col" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: flex; height: 1022px; width: 1392px; flex-direction: column; user-select: none; --z0: hsl(0 0% 100%); --z1: hsl(60 10% 96.0784%); --z2: hsl(48 12.1951% 91.9608%); --z3: hsl(51.4286 11.4754% 88.0392%); --z4: hsl(54.5455 10.8911% 80.1961%); --z5: hsl(54.5455 5.7592% 62.549%); --z6: hsl(42.8571 2.9289% 46.8627%); --t0: hsl(0 0% 4.3137% / 0); --t1: hsl(0 0% 4.3137% / .04); --t2: hsl(0 0% 4.3137% / .06); --t3: hsl(0 0% 4.3137% / .1); --t4: hsl(0 0% 4.3137% / .16); --t5: hsl(0 0% 4.3137% / .25); --t6: hsl(0 0% 4.3137% / .5); --t7: hsl(0 0% 4.3137% / .8); --t8: hsl(0 0% 4.3137% / .9); --t9: hsl(0 0% 4.3137% / 1); --core-10-red: hsl(from #ff3a30 h s l / 10%); --core-20-red: hsl(from #ff3a30 h s l / 20%); --core-black: hsl(0 0% 4.3137%); --core-red: #ff3a30; --core-red-hover: #ff5047; --core-white: hsl(0 0% 100%); --accent-20-brightness: #142633; --accent-brand: hsl(14.7692 63.1068% 59.6078%); --extended-10-green: hsl(from #1e9e3c h s l / 10%); --extended-10-pink: hsl(from #cd2054 h s l / 10%); --extended-10-purple: hsl(from #8e6bd9 h s l / 10%); --extended-10-yellow: hsl(from #98801f h s l / 10%); --extended-20-green: hsl(from #1e9e3c h s l / 20%); --extended-20-pink: hsl(from #cd2054 h s l / 20%); --extended-20-purple: hsl(from #8e6bd9 h s l / 20%); --extended-20-yellow: hsl(from #98801f h s l / 20%); --extended-green: #1e9e3c; --extended-pink: #cd2054; --extended-purple: #8e6bd9; --extended-yellow: #98801f; --extended-orange: #c5621b; --extended-10-orange: hsl(from #c5621b h s l / 10%); --extended-20-orange: hsl(from #c5621b h s l / 20%); --border-default: hsl(0 0% 4.3137% / .06); --border-light-mode-contrast: hsl(0 0% 4.3137% / .06); --border-segment-selected: hsl(0 0% 4.3137% / .06); --fill-contained-busy: hsl(0 0% 4.3137% / .06); --fill-contained-default: hsl(0 0% 100%); --fill-contained-disabled: hsl(0 0% 4.3137% / .04); --fill-contained-hover: hsl(0 0% 4.3137% / .04); --fill-contained-selected: hsl(0 0% 4.3137% / .06); --fill-destructive-busy: hsl(0 0% 4.3137% / .06); --fill-destructive-default: #ff3a30; --fill-destructive-disabled: hsl(0 0% 4.3137% / .06); --fill-destructive-hover: #ff5047; --fill-primary-busy: hsl(from hsl(0 0% 4.3137% / 1) h s l / 50%); --fill-primary-default: hsl(0 0% 4.3137% / 1); --fill-primary-disabled: hsl(0 0% 4.3137% / .06); --fill-primary-hover: #292929; --fill-uncontained-busy: hsl(0 0% 4.3137% / .06); --fill-uncontained-default: hsl(0 0% 4.3137% / 0); --fill-uncontained-disabled: hsl(0 0% 4.3137% / 0); --fill-uncontained-hover: hsl(0 0% 4.3137% / .06); --fill-uncontained-selected: hsl(0 0% 4.3137% / .1); --shadow-large: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --shadow-medium: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --shadow-prompt-blur: hsl(from hsl(0 0% 4.3137% / 1) h s l / 4%); --shadow-prompt-focus: hsl(from hsl(0 0% 4.3137% / 1) h s l / 4%); --shadow-small: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --surface-hud: hsl(from hsl(0 0% 100%) h s l / 95%); --surface-panel: hsl(0 0% 100%); --surface-panel-elevated: hsl(0 0% 100%); --surface-popover: hsl(0 0% 100%); --surface-primary: hsl(60 14.2857% 98.6275%); --surface-primary-elevated: #fcfcfb; --surface-prompt-blur: hsl(from hsl(0 0% 100%) h s l / 80%); --surface-prompt-focus-hover: hsl(0 0% 100%); --surface-toast: hsl(54.5455 10.8911% 80.1961%); --text-assistant-primary: hsl(0 0% 4.3137%); --text-assistant-secondary: hsl(40 2.8302% 41.5686%); --text-contained-busy: hsl(0 0% 4.3137% / .5); --text-contained-default: hsl(0 0% 4.3137% / .8); --text-contained-disabled: hsl(0 0% 4.3137% / .25); --text-contained-hover: hsl(0 0% 4.3137% / .8); --text-contained-selected: hsl(0 0% 4.3137% / 1); --text-destructive-busy: hsl(0 0% 4.3137% / .5); --text-destructive-default: hsl(from hsl(0 0% 100%) h s l / 95%); --text-destructive-disabled: hsl(0 0% 4.3137% / .25); --text-destructive-hover: hsl(0 0% 100%); --text-primary-busy: hsl(from hsl(0 0% 100%) h s l / 50%); --text-primary-default: hsl(0 0% 100%); --text-primary-disabled: hsl(0 0% 4.3137% / .25); --text-primary-hover: hsl(0 0% 100%); --text-uncontained-busy: hsl(0 0% 4.3137% / .5); --text-uncontained-default: hsl(0 0% 4.3137% / .8); --text-uncontained-disabled: hsl(0 0% 4.3137% / .25); --text-uncontained-hover: hsl(0 0% 4.3137% / .8); --text-uncontained-selected: hsl(0 0% 4.3137% / 1); --ui-divider: hsl(0 0% 4.3137% / .06); --ui-focus: #2a78d6; --ui-grabber: hsl(0 0% 4.3137% / .5); --ui-segment-selected: hsl(0 0% 100%); --ui-separator: hsl(0 0% 4.3137% / .1); --ui-slider-background: hsl(48 12.1951% 91.9608%); --ui-slider-fill: hsl(0 0% 4.3137% / .1); --ui-slider-fill-active: hsl(0 0% 4.3137% / .1); --ui-slider-fill-hover: hsl(0 0% 4.3137% / .1); --ui-slider-fill-charged-start: color-mix(in srgb, #2a78d6 18%, hsl(from #8e6bd9 h calc(s .8) calc(l 1.15))); --ui-slider-fill-charged-end: color-mix(in srgb, #cd2054 15%, hsl(from #8e6bd9 h calc(s .85) calc(l 1.02))); --ui-slider-energy-cool: color-mix(in srgb, #8e6bd9 40%, hsl(0 0% 100%)); --ui-slider-energy-reveal: 45%; --ui-slider-energy-hot: color-mix(in srgb, #cd2054 8%, hsl(0 0% 100%)); --ui-slider-energy-tint-blue: color-mix(in srgb, color-mix(in srgb, #2a78d6 30%, hsl(0 0% 100%)) 28%, transparent); --ui-slider-energy-tint-pink: color-mix(in srgb, color-mix(in srgb, #cd2054 30%, hsl(0 0% 100%)) 28%, transparent); --ui-slider-energy-bed-fill: 1; --ui-slider-energy-charge-max: .92; --ui-slider-energy-charge-ramp: .5; --ui-slider-energy-ink-floor: .28; --ui-slider-energy-ink-ceil: 1; --ui-slider-energy-gain: 1.18; --ui-slider-handle: hsl(0 0% 100%); --ui-slider-handle-active: hsl(0 0% 100%); --ui-slider-handle-hover: hsl(0 0% 100%); --ui-slider-handle-energized: hsl(0 0% 100%); --ui-switch-off-background: hsl(0 0% 4.3137% / .16); --ui-switch-off-knob: hsl(0 0% 100%); --ui-switch-on-background: #2a78d6; --ui-switch-on-knob: hsl(0 0% 100%); --ui-switch-on-white: hsl(0 0% 100%); --ui-tooltip-fill: #333; --ui-tooltip-text: hsl(0 0% 100%); --ui-user-message-background: hsl(0 0% 4.3137% / .06); --ui-user-message-primary-text: hsl(0 0% 4.3137%); --button-contained-default-depth-color: hsl(0 0% 4.3137% / .04); --button-contained-default-inner-color: hsl(0 0% 4.3137% / .1); --button-contained-default-outer-color: hsl(0 0% 4.3137% / 0); --focus-inner-color: #2a78d6; --hud-depth-color: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --hud-inner-color: hsl(0 0% 4.3137% / 0); --hud-outer-color: hsl(0 0% 4.3137% / .06); --light-mode-stroke-outer-color: hsl(0 0% 4.3137% / .06); --primary-elevated-depth-color: color-mix(in oklab, #0b0b0b 6%, transparent); --primary-elevated-inner-color: hsl(0 0% 4.3137% / 0); --primary-elevated-outer-color: hsl(0 0% 4.3137% / .06); --prompt-blur-depth-color: hsl(from hsl(0 0% 4.3137% / 1) h s l / 4%); --prompt-blur-inner-color: hsl(0 0% 4.3137% / 0); --prompt-blur-outer-color: hsl(0 0% 4.3137% / .1); --prompt-focus-depth-color: hsl(from hsl(0 0% 4.3137% / 1) h s l / 4%); --prompt-focus-inner-color: hsl(0 0% 4.3137% / 0); --prompt-focus-outer-color: hsl(0 0% 4.3137% / .25); --segment-selected-inner-color: hsl(0 0% 4.3137% / .1); --slider-handle-depth-color: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --slider-handle-inner-color: hsl(0 0% 4.3137% / 0); --slider-handle-outer-color: hsl(0 0% 4.3137% / .04); --stroke-shadow-depth-color: hsl(from hsl(0 0% 4.3137% / 1) h s l / 6%); --stroke-shadow-inner-color: hsl(0 0% 4.3137% / 0); --stroke-shadow-outer-color: hsl(0 0% 4.3137% / .06); --prompt-compact-bg: hsl(0 0% 4.3137% / .04); --prompt-compact-bg-focus: hsl(0 0% 4.3137% / .06); --surface-popover-elevated: hsl(0 0% 100%); --contrast-stroke-color: hsl(0 0% 4.3137% / .1); --card-outline-color: hsl(0 0% 4.3137% / .1); --fill-assistant-code: hsl(0 0% 4.3137% / .04); --text-assistant-code: hsl(0 0% 4.3137%); --view-tab-selected-bg: hsl(0 0% 4.3137% / 0); --view-tab-selected-ring: inset 0 0 0 .5px hsl(0 0% 4.3137% / .16); --text-muted: hsl(0 0% 4.3137% / .6); --epitaxy-accent-10: hsl(from #2a78d6 h s l / 10%); --epitaxy-accent-20: hsl(from #2a78d6 h s l / 20%); --class-base-height: 24px; --class-base-icon: 16px; --class-base-radius: 6px; --class-large-height: 28px; --class-large-icon: 20px; --class-large-radius: 8px; --class-micro-height: 12px; --class-micro-icon: 12px; --class-small-height: 20px; --class-small-icon: 12px; --class-small-radius: 5px; --class-tiny-height: 16px; --class-tiny-icon: 12px; --class-xl-height: 32px; --class-xl-icon: 24px; --g0: 0px; --g1: 2px; --g2: 3px; --g3: 4px; --g4: 5px; --g5: 6px; --g6: 8px; --g7: 10px; --g8: 12px; --h1: 12px; --h2: 16px; --h3: 20px; --h4: 24px; --h5: 28px; --h6: 32px; --h7: 40px; --h8: 44px; --leading-body: 18px; --leading-caption: 13px; --leading-code: 1.53846; --leading-footnote: 15px; --leading-heading: 18px; --leading-prompt: 21px; --leading-title: 24px; --misc-slider-handle-height-lg: 23px; --misc-slider-handle-height-sm: 11.5px; --misc-slider-handle-width-lg: 16px; --misc-slider-handle-width-sm: 11.5px; --misc-window-padding: 8px; --misc-window-radius: 16px; --p0: 0px; --p1: 2px; --p2: 3px; --p3: 4px; --p4: 5px; --p5: 6px; --p6: 8px; --p7: 10px; --p8: 12px; --r0: 0px; --r1: 2px; --r2: 3px; --r3: 4px; --r4: 5px; --r5: 6px; --r6: 8px; --r7: 10px; --r8: 12px; --radius-full: 999px; --text-body: 13px; --text-caption: 11px; --text-code: .928571em; --text-footnote: 12px; --text-heading: 14px; --text-prompt: 16px; --text-title: 20px; --family-monospace: &quot;Anthropic Mono&quot;, ui-monospace, monospace; --family-ui: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif; --weight-bold: 700; --weight-medium: 500; --weight-regular: 400; --weight-semibold: 600; --button-contained-default-depth-blur: 2px; --button-contained-default-depth-y: 1px; --button-contained-default-inner-width: 1px; --button-contained-default-outer-width: 0px; --focus-inner-width: 1px; --hud-background-blur: 12px; --hud-depth-blur: 24px; --hud-depth-y: 6px; --hud-inner-width: 0px; --hud-outer-width: 1px; --light-mode-stroke-outer-width: 1px; --primary-elevated-background-blur: 20px; --primary-elevated-depth-blur: 24px; --primary-elevated-depth-y: 4px; --primary-elevated-inner-width: 0px; --primary-elevated-outer-width: 1px; --prompt-blur-background-blur: 100px; --prompt-blur-depth-blur: 8px; --prompt-blur-depth-y: 2px; --prompt-blur-inner-width: 0px; --prompt-blur-outer-width: 1px; --prompt-focus-background-blur: 100px; --prompt-focus-depth-blur: 16px; --prompt-focus-depth-y: 6px; --prompt-focus-inner-width: 0px; --prompt-focus-outer-width: 1px; --segment-selected-inner-width: 1px; --shadow-large-blur: 24px; --shadow-large-y: 8px; --shadow-medium-blur: 16px; --shadow-medium-y: 6px; --shadow-small-blur: 12px; --shadow-small-y: 4px; --slider-handle-depth-blur: 12px; --slider-handle-depth-y: 0px; --slider-handle-inner-width: 0px; --slider-handle-outer-width: 1px; --stroke-shadow-background-blur: 12px; --stroke-shadow-depth-blur: 16px; --stroke-shadow-depth-y: 6px; --stroke-shadow-inner-width: 0px; --stroke-shadow-outer-width: 1px; --btn-spring: linear(0, .2459, .6526, .9468, 1.0764, 1.0915, 1.0585, 1.0219, .9993, .9914, .9921, .9957, .9988, 1.0004, 1); --spinner-arc: hsl(0 0% 4.3137% / .8); --chat-turn-gap: calc(13px 1.42857 .75); --chat-item-gap: calc(13px 1.42857 .5); font-family: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; font-weight: 400; color: rgb(11, 11, 11); overflow-wrap: break-word; --chat-gutter: 32px;"><div class="flex-1 min-h-0" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); min-height: 0px; flex: 1 1 0%;"><div class="relative h-full w-full" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; height: 1022px; width: 1392px; --tile-container-border: transparent; --tile-container-bg: transparent; --tile-indicator-color: #2a78d6; --tile-indicator-thickness: 3px; --tile-resize-color: hsl(0 0% 4.3137% / .16); --tile-resize-color-active: hsl(0 0% 4.3137% / 1); --tile-resize-color-focus: #2a78d6; --tile-resize-color-disabled: hsl(0 0% 4.3137% / .06); --tile-resize-thickness: 3px; --tile-resize-length: 56px; --tile-drag-color: hsl(0 0% 4.3137% / .16); --tile-drag-color-active: hsl(0 0% 4.3137% / 1); --tile-drag-color-focus: #2a78d6;"><div style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); width: 1392px; height: 1022px; display: flex; overflow: clip; contain: strict;"><div style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgba(0, 0, 0, 0); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 8px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); width: 1392px; height: 1022px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); display: flex; flex-direction: column; position: relative; align-items: stretch; --tiles-padding: 8px; --tiles-gap: 12px;"><div style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: flex; position: relative; min-width: 0px; min-height: 0px; overflow: visible; flex-direction: row; flex: 1 1 0px;"><div style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; min-width: 280px; min-height: 100px; overflow: visible; z-index: 1; flex: 1 1 0px; transform: none;"><div class="tiles-shell" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: grid; grid-template-rows: minmax(0px, 1fr); grid-template-columns: minmax(0px, 1fr); width: 450px; height: 1004px;"><div data-pane-root="" class="epitaxy-view-panel min-w-0 shrink-0 relative isolate flex flex-col rounded-r6 epitaxy-code-surface" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; isolation: isolate; display: flex; min-width: 0px; flex-shrink: 0; flex-direction: column; border-radius: 8px; --primary-elevated-outer-color: #e8e8e8; height: 1004px; --code-theme-light-bg: #fdfdfc; --code-theme-dark-bg: #262626;"><div class="flex flex-col flex-1 min-h-0 overflow-hidden rounded-b-r6" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: flex; min-height: 0px; flex: 1 1 0%; flex-direction: column; overflow: hidden; border-bottom-right-radius: 8px; border-bottom-left-radius: 8px;"><div class="h-full flex flex-col overflow-hidden" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); display: flex; height: 972px; flex-direction: column; overflow: hidden;"><div data-file-viewer="true" class="flex-1 min-h-0 overflow-y-auto [contain:strict] select-text px-[24px] py-[16px]" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); min-height: 0px; flex: 1 1 0%; overflow-y: auto; padding-inline: 24px; padding-block: 16px; contain: strict; user-select: text;"><div class="mx-auto max-w-[860px]" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); margin-inline: auto; max-width: 860px;"><div class="epitaxy-markdown epitaxy-file-prose" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); gap: 16px; font-family: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; font-weight: 400; color: rgb(11, 11, 11); overflow-wrap: break-word; flex-direction: column; display: block; --chat-item-gap: 16px;"><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Summary</h2><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">The built-in Browser pane (<code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">mcp__Claude_Browser__*</code>) refuses to navigate to RFC1918 addresses and single-label internal hostnames. For anyone whose work target is an internal dev server behind a VPN, the pane is unusable — every navigation fails immediately with<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">navigation to &lt;url&gt; was denied or failed</code>, which does not say whether it was blocked by policy, failed DNS, or failed TLS.</p><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">I assume the block itself is deliberate (an SSRF guard on an agent-driven browser is sensible, and I am not asking for it to be removed). The requests are:<span> </span><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">(1)</strong><span> </span>an opt-in way to allow specific internal origins for a project, and<span> </span><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">(2)</strong><span> </span>an error message that states the reason.</p><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Environment</h2><ul style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px 0px 0px 20px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); list-style: outside; gap: 6px; flex-direction: column; display: flex;"><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Claude Code 2.1.143, desktop app</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">macOS 26.5.2 (Darwin 25.5.0)</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Model: Opus 5</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Target: an internal web app on a corporate VPN, single-label hostname<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">vm-cslibraries</code>, resolving to<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">10.15.43.27</code></li></ul><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Observed behavior</h2><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Same browser pane, same session, four navigations:</p><div class="overflow-x-auto" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); overflow-x: auto;">
URL | Result
-- | --
https://example.com | loads
https://<public-hostname> (resolves to a public IP) | loads
https://vm-cslibraries (single-label internal host) | denied or failed
http://vm-cslibraries | denied or failed
https://10.15.43.27 (the same host by IP) | denied or failed

</div><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">The private-IP attempt fails<span> </span><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">instantly</strong>, not after a connect timeout, so nothing is attempting to route and failing — it is being refused up front.</p><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Meanwhile the host is demonstrably reachable from the same machine at the same moment:</p><div class="epitaxy-codeblock relative max-w-full w-fit" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative; width: fit-content; max-width: 100%; margin-block: 4px;"><div class="relative" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: relative;"><div data-code-text="$ curl -sS -o /dev/null -k -w &quot;%{remote_ip} %{http_code}\n&quot; https://vm-cslibraries/
10.15.43.27 302" class="epitaxy-diff rounded-r6 overflow-clip" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); overflow: clip; border-radius: 8px; --diffs-font-size: .928571em; --diffs-line-height: 1.53846; --diffs-font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; --diffs-header-font-family: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif; --diffs-addition-color-override: #1e9e3c; --diffs-deletion-color-override: #cd2054; --diffs-modified-color-override: #184f95; --diffs-gap-inline: 8px; --diffs-gap-block: 4px; box-shadow: rgba(11, 11, 11, 0.1) 0px 0px 0px 1px;"><diffs-container style="--diffs-font-fallback: &quot;SF Mono&quot;, Monaco, Consolas, &quot;Ubuntu Mono&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; --diffs-header-font-fallback: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, &quot;Noto Sans&quot;, &quot;Liberation Sans&quot;, Arial, sans-serif; --diffs-mixer: light-dark(#000,#fff); --diffs-gap-fallback: 8px; --diffs-scrollbar-gutter-fallback: 6px; --diffs-scrollbar-gutter: 15px; --diffs-added-light: #0dbe4e; --diffs-added-dark: #5ecc71; --diffs-modified-light: #009fff; --diffs-modified-dark: #69b1ff; --diffs-deleted-light: #ff2e3f; --diffs-deleted-dark: #ff6762; color-scheme: light; font-family: &quot;Anthropic Sans&quot;, system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif; font-size: 12.0714px; line-height: 1.53846; font-feature-settings: normal; --diffs-bg: light-dark(#fdfdfc,#262626); --diffs-bg-buffer: light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 92%, light-dark(#000,#fff)),color-mix(in lab, light-dark(#fdfdfc,#262626) 92%, light-dark(#000,#fff))); --diffs-bg-context: light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 98.5%, light-dark(#000,#fff)),color-mix(in lab, light-dark(#fdfdfc,#262626) 92.5%, light-dark(#000,#fff))); --diffs-bg-context-gutter: light-dark(color-mix(in lab, light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 98.5%, light-dark(#000,#fff)),color-mix(in lab, light-dark(#fdfdfc,#262626) 92.5%, light-dark(#000,#fff))) 90%, light-dark(#fdfdfc,#262626)),color-mix(in lab, light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 98.5%, light-dark(#000,#fff)),color-mix(in lab, light-dark(#fdfdfc,#262626) 92.5%, light-dark(#000,#fff))) 45%, light-dark(#fdfdfc,#262626))); --diffs-bg-separator: light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 96%, light-dark(#000,#fff)),color-mix(in lab, light-dark(#fdfdfc,#262626) 85%, light-dark(#000,#fff))); --diffs-fg: light-dark(#1a1a1a,#ededed); --diffs-fg-number: light-dark(color-mix(in lab, light-dark(#1a1a1a,#ededed) 65%, light-dark(#fdfdfc,#262626)),color-mix(in lab, light-dark(#1a1a1a,#ededed) 65%, light-dark(#fdfdfc,#262626))); --diffs-fg-conflict-marker: light-dark(color-mix(in lab, light-dark(#1a1a1a,#ededed) 65%, light-dark(#fdfdfc,#262626)),color-mix(in lab, light-dark(#1a1a1a,#ededed) 65%, light-dark(#fdfdfc,#262626))); --diffs-deletion-base: #cd2054; --diffs-addition-base: #1e9e3c; --diffs-modified-base: #184f95; --diffs-bg-deletion: light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 88%, #cd2054),color-mix(in lab, light-dark(#fdfdfc,#262626) 80%, #cd2054)); --diffs-bg-deletion-emphasis: light-dark(rgb(from #cd2054 r g b / .15),rgb(from #cd2054 r g b / .2)); --diffs-bg-addition: light-dark(color-mix(in lab, light-dark(#fdfdfc,#262626) 88%, #1e9e3c),color-mix(in lab, light-dark(#fdfdfc,#262626) 80%, #1e9e3c)); --diffs-bg-addition-emphasis: light-dark(rgb(from #1e9e3c r g b / .15),rgb(from #1e9e3c r g b / .2)); --diffs-selection-base: #184f95; --diffs-selection-number-fg: light-dark(color-mix(in lab, #184f95 65%, light-dark(#000,#fff)),color-mix(in lab, #184f95 75%, light-dark(#000,#fff))); background-color: rgb(253, 253, 252); color: rgb(26, 26, 26); display: block; --diffs-scrollbar-gutter-measured: 15px; --diffs-dark: #ededed; --diffs-dark-bg: #262626; --diffs-dark-addition-color: #32d74b; --diffs-dark-deletion-color: #ff3a30; --diffs-dark-modified-color: #0099ff; --diffs-light: #1a1a1a; --diffs-light-bg: #fdfdfc; --diffs-light-addition-color: #1e9e3c; --diffs-light-deletion-color: #ff3a30; --diffs-light-modified-color: #0073e6; box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); --lightningcss-light: initial; --lightningcss-dark: ;"><pre data-file="" data-disable-line-numbers="" data-overflow="wrap" tabindex="0" style="box-sizing: border-box; isolation: isolate; font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; outline: none; margin: 0px; padding: 8px 41.242px 8px 17.242px; display: block; background-color: rgb(253, 253, 252); --diffs-grid-number-column-width: minmax(min-content, max-content); --diffs-code-grid: minmax(min-content, max-content) 1fr; --diffs-min-number-column-width-default: 1ch;"><code data-code="" style="box-sizing: border-box; isolation: isolate; font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; outline: none; margin: 0px; padding: 4px 0px 0px; display: grid; background-color: rgb(253, 253, 252); contain: content; grid-auto-flow: dense; grid-template-columns: minmax(min-content, max-content) 1fr; overflow: clip; overscroll-behavior-x: none; tab-size: 2; scrollbar-gutter: stable; align-self: flex-start; padding-block: 0px; --diffs-column-width: 343px; --diffs-column-content-width: 343px;"><div data-gutter="" style="box-sizing: border-box; grid-template-rows: subgrid; grid-template-columns: subgrid; z-index: 3; background-color: rgb(253, 253, 252); grid-area: span 2 / 1; display: grid; position: relative;"><div data-line-type="context" data-column-number="1" data-line-index="0" style="box-sizing: content-box; --diffs-computed-decoration-bg: light-dark(#fdfdfc,#262626); --diffs-computed-diff-line-bg: light-dark(#fdfdfc,#262626); --diffs-computed-selected-line-bg: light-dark(#fdfdfc,#262626); color: lab(40.7716 -0.0364617 0.167274); background-color: rgb(253, 253, 252); --diffs-selection-mix-target: #184f95; padding-inline: 1ch 1ch; position: relative; text-align: right; user-select: none; padding: 0px; border-right: 0px; min-width: 0px;"></div><div data-line-type="context" data-column-number="2" data-line-index="1" style="box-sizing: content-box; --diffs-computed-decoration-bg: light-dark(#fdfdfc,#262626); --diffs-computed-diff-line-bg: light-dark(#fdfdfc,#262626); --diffs-computed-selected-line-bg: light-dark(#fdfdfc,#262626); color: lab(40.7716 -0.0364617 0.167274); background-color: rgb(253, 253, 252); --diffs-selection-mix-target: #184f95; padding-inline: 1ch 1ch; position: relative; text-align: right; user-select: none; padding: 0px; border-right: 0px; min-width: 0px;"></div></div><div data-content="" style="box-sizing: border-box; grid-template-rows: subgrid; grid-template-columns: subgrid; background-color: rgb(253, 253, 252); grid-area: span 2 / 2; min-width: 0px; display: grid;"><div data-line="1" data-line-type="context" data-line-index="0" style="box-sizing: border-box; --diffs-computed-decoration-bg: light-dark(#fdfdfc,#262626); --diffs-computed-diff-line-bg: light-dark(#fdfdfc,#262626); --diffs-computed-selected-line-bg: light-dark(#fdfdfc,#262626); color: rgb(26, 26, 26); background-color: rgb(253, 253, 252); --diffs-selection-mix-target: #184f95; padding-inline: 0px; position: relative; white-space: pre-wrap; word-break: break-word; min-height: 1lh;"><span style="box-sizing: border-box; color: rgb(26, 26, 26); background-color: rgba(0, 0, 0, 0); font-weight: 400; font-style: normal; text-decoration: rgb(26, 26, 26);">$ curl -sS -o /dev/null -k -w "%{remote_ip} %{http_code}\n" https://vm-cslibraries/</span></div><div data-line="2" data-line-type="context" data-line-index="1" style="box-sizing: border-box; --diffs-computed-decoration-bg: light-dark(#fdfdfc,#262626); --diffs-computed-diff-line-bg: light-dark(#fdfdfc,#262626); --diffs-computed-selected-line-bg: light-dark(#fdfdfc,#262626); color: rgb(26, 26, 26); background-color: rgb(253, 253, 252); --diffs-selection-mix-target: #184f95; padding-inline: 0px; position: relative; white-space: pre-wrap; word-break: break-word; min-height: 1lh;"><span style="box-sizing: border-box; color: rgb(26, 26, 26); background-color: rgba(0, 0, 0, 0); font-weight: 400; font-style: normal; text-decoration: rgb(26, 26, 26);">10.15.43.27 302</span></div></div></code></pre></diffs-container></div><div class="absolute right-[calc(var(--p4)+var(--p1))] flex gap-[var(--p2)] top-[var(--p4)]" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); position: absolute; top: 5px; right: 7px; display: flex; gap: 3px;"></div></div></div><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">and a local Playwright script drives the same host successfully throughout.</p><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Steps to reproduce</h2><ol style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px 0px 0px 20px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); list-style: decimal; gap: 6px; flex-direction: column; display: flex;"><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Connect to a VPN that exposes an internal HTTP host on a private (RFC1918) address.</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">In the Browser pane, navigate to that host by hostname or by IP.</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">Navigation is refused; a public URL in the same pane works.</li></ol><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Why this matters</h2><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">The whole point of the pane is to look at the thing you are building. For internal enterprise development — which is a large share of Claude Code's professional use — the thing you are building is almost never on a public address. Today the pane silently excludes that entire class of work.</p><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">The<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">claude-in-chrome</code><span> </span>extension is a real workaround and I use it, but it is a different surface with its own setup, and it is not available to everyone. It also means the two browser tools have quietly different reachability, which is not documented anywhere I could find.</p><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Requests</h2><ol style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px 0px 0px 20px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); list-style: decimal; gap: 6px; flex-direction: column; display: flex;"><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);"><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">Opt-in allowlist for private origins.</strong><span> </span>Something like a<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">browser.allowedPrivateOrigins</code><span> </span>array in project or user settings, listing exact origins (<code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">https://vm-cslibraries</code>,<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">https://10.15.43.27</code>), off by default, requiring explicit user consent — mirroring how the extension already gates each new origin behind an approval card. Blanket-unblocking<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">10.0.0.0/8</code><span> </span>is not what I am asking for.</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);"><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">Say why.</strong><span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">denied or failed</code><span> </span>collapses at least three distinct causes.<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">blocked: private address range (10.15.43.27) — see &lt;docs link&gt;</code><span> </span>would have saved the investigation that produced this report.</li><li style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);"><strong style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-weight: 500;">Document the difference</strong><span> </span>between the built-in pane and the Chrome extension with respect to private-network reachability.</li></ol><h2 style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px 0px 16px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-size: 17px; font-weight: 600; line-height: 22px; color: rgb(11, 11, 11); margin-block: 24px 8px; padding-block: 0px;">Security note</h2><p style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0);">I recognise the risk this control exists to prevent: an agent-driven browser that can reach private ranges can be steered by injected content toward internal admin interfaces, routers, and cloud metadata endpoints such as<span> </span><code node="[object Object]" data-epitaxy-inline-code="" style="box-sizing: border-box; border: 0px solid color(srgb 0.0431373 0.0431373 0.0431373 / 0.1); margin: 0px; padding: 0px; outline-color: rgb(37, 106, 191); scrollbar-width: thin; scrollbar-color: rgba(30, 30, 29, 0.35) rgba(0, 0, 0, 0); font-family: &quot;Anthropic Mono&quot;, ui-monospace, monospace; font-feature-settings: &quot;calt&quot; 0, &quot;liga&quot; 0; font-variation-settings: normal; font-size: 12px; font-variant-ligatures: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(11, 11, 11, 0.04); color: rgb(11, 11, 11); border-radius: 4px; padding-block: 1px; padding-inline: 2px; line-height: 1.4;">169.254.169.254</code>. An explicit, per-origin, user-configured allowlist keeps that closed by default while unblocking the legitimate case. Link-local and cloud metadata addresses could reasonably stay permanently blocked even when an allowlist is configured.</p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><br class="Apple-interchange-newline">

Proposed Solution

Opt-in allowlist for private origins. Something like a browser.allowedPrivateOrigins array in project or user settings, listing exact origins (https://vm-cslibraries, https://10.15.43.27), off by default, requiring explicit user consent — mirroring how the extension already gates each new origin behind an approval card. Blanket-unblocking 10.0.0.0/8 is not what I am asking for.

Say why. denied or failed collapses at least three distinct causes. blocked: private address range (10.15.43.27) — see <docs link> would have saved the investigation that produced this report.

Document the difference between the built-in pane and the Chrome extension with respect to private-network reachability.

Alternative Solutions

_No response_

Priority

High - Significant impact on productivity

Feature Category

Other

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗