barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

среда, 9 сентября 2026 г.

Claude Code network sandboxing и доступ на localhost

Проблема

У меня на localhost:2746 поднят http сервер. Есть Claude Code, запускаемый со включенной песочницей, включая network-песочницу. В настройках указан localhost и 127.0.0.1 как разрешенные хосты:

            "network": {
                "allowedDomains": ["127.0.0.1", "localhost"],
                "allowManagedDomainsOnly": True,
                "strictAllowlist": True,
            },

Однако, клод не может сделать curl на http://localhost:2746, падает "Could not connect to server".

Причина

См. баг https://github.com/anthropics/claude-code/issues/28018. Сетевая изоляция песочницы заключается в том, что весь HTTP(S) траффик должен идти через проксю, поднимаемую на порту 3128. Это прокся автоматически подставляется в переменные HTTP_PROXY/HTTPS_PROXY внутри песочницы. Однако, localhost и 127.0.0.1 также автоматически подставляются в NO_PROXY, что предписывает на localhost ходить напрямую, в обход прокси. И такое прямое подключение не работает.

Решение

Проинструктировать Claude Code сбрасывать NO_PROXY перед выполнением сетевого вызова на localhost, т.к. вот такой вызов из песочницы проходит:

NO_PROXY="" no_proxy="" curl -s http://127.0.0.1:2746/health

Либо для локальных сервисов, которые должны быть видны из песочницы, использовать альтернативный loopback адрес, скажем, 127.0.0.2.