diff --git a/.changeset/giant-bags-wash.md b/.changeset/giant-bags-wash.md
new file mode 100644
index 0000000000..5731e4f922
--- /dev/null
+++ b/.changeset/giant-bags-wash.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: ensure bind:group works as intended with proxied state objects
diff --git a/packages/svelte/src/internal/client/dom/elements/bindings/input.js b/packages/svelte/src/internal/client/dom/elements/bindings/input.js
index 28a99f7eed..7af20b932a 100644
--- a/packages/svelte/src/internal/client/dom/elements/bindings/input.js
+++ b/packages/svelte/src/internal/client/dom/elements/bindings/input.js
@@ -2,7 +2,7 @@ import { DEV } from 'esm-env';
import { render_effect, teardown } from '../../../reactivity/effects.js';
import { listen_to_event_and_reset_event } from './shared.js';
import * as e from '../../../errors.js';
-import { get_proxied_value, is } from '../../../proxy.js';
+import { is } from '../../../proxy.js';
import { queue_micro_task } from '../../task.js';
import { hydrating } from '../../hydration.js';
import { is_runes } from '../../../runtime.js';
@@ -126,7 +126,7 @@ export function bind_group(inputs, group_index, input, get, set = get) {
if (is_checkbox) {
value = value || [];
// @ts-ignore
- input.checked = get_proxied_value(value).includes(get_proxied_value(input.__value));
+ input.checked = value.includes(input.__value);
} else {
// @ts-ignore
input.checked = is(input.__value, value);
diff --git a/packages/svelte/tests/runtime-runes/samples/state-bind-group/_config.js b/packages/svelte/tests/runtime-runes/samples/state-bind-group/_config.js
new file mode 100644
index 0000000000..72f49c6e0e
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-bind-group/_config.js
@@ -0,0 +1,19 @@
+import { flushSync } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ html: `\n[]`,
+
+ test({ assert, target }) {
+ const btn = target.querySelector('button');
+
+ btn?.click();
+ flushSync();
+
+ assert.equal(target.querySelectorAll('input')[1].checked, true);
+ assert.htmlEqual(
+ target.innerHTML,
+ `\n["2"]`
+ );
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-bind-group/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-bind-group/main.svelte
new file mode 100644
index 0000000000..ca78457ee8
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-bind-group/main.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+{#each values as val, i}
+
+{/each}
+
+{JSON.stringify(checkboxes)}