anthropics / anthropics/devcontainer-features

Please publish a release: firewall removal merged a year ago (#21) but ghcr.io still serves v1.0.5 with the old behavior

未關閉
#42 1 則留言 4 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Shell
星號
303
分支
60
PR 合併指標
30 天內沒有已合併 PR

描述

PR #21 ("Remove firewall feature from claude-code") merged on **2025-06-13**, removing all firewall logic from the `claude-code` feature. A year later, the published artifact `ghcr.io/anthropics/devcontainer-features/claude-code:1.0` is still **v1.0.5** and still contains the pre-#21 behavior. Could you cut a release (e.g. v1.0.6 or v1.1.0) so the artifact matches `main`?

The stale artifact is the root cause of at least two open issues:

- #38 — `install.sh` in the published artifact (`setup_firewall_script()`, ~line 117) unconditionally copies its bundled script to `/usr/local/bin/init-firewall.sh`. Features build **after** the user's Dockerfile, so any user-provided script at that path is silently overwritten, and there is no feature option to disable this (`"options": {}`).
- #30 — the bundled `init-firewall.sh` is an outdated copy that breaks DNS in docker-compose setups.

One more failure mode we hit (not yet covered by those issues): the bundled script hard-fails the whole container setup (`exit 1`) when **any** domain in its allowlist fails to resolve — including `statsig.anthropic.com` and `statsig.com`. Enterprise networks commonly block telemetry domains at DNS level, even though Claude Code works fine there with `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`. Combined with the silent overwrite, the sequence is nasty to debug: a user writes their own firewall script that tolerates blocked telemetry domains, the feature silently replaces it, and `postCreateCommand` then aborts on a domain the user never asked to allowlist.

The divergence makes this hard to troubleshoot from source: `src/claude-code/install.sh` on `main` contains no firewall logic at all, yet `devcontainer-feature.json` on `main` also says `1.0.5` — the same version string as the published artifact that *does* contain it. Inspecting the repo tells you the bug shouldn't exist.

Verified today (2026-06-12) by pulling the OCI layer for `claude-code:1.0` from ghcr.io: manifest reports v1.0.5, `install.sh` contains `setup_firewall_script()`, bundled `init-firewall.sh` is the 119-line version.

## Asks

1. **Publish a release** from current `main` so the artifact no longer installs/overwrites `/usr/local/bin/init-firewall.sh` (this alone resolves #38 and #30).
2. Bump the version in `devcontainer-feature.json` as part of that release, so the source and published artifact can't share a version string while differing in behavior.
3. If a firewall script ever returns to this feature: namespace it (e.g. `claude-init-firewall.sh`), never overwrite an existing file, gate it behind a feature option, and make it warn-and-continue on unresolvable domains rather than aborting container setup.

Happy to send a PR for the version bump if that helps.

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。