Compare commits

..

30 Commits

Author SHA1 Message Date
Boris Cherny
1aaffa4e6d Update dedupe.md 2025-07-30 19:29:10 -07:00
Boris Cherny
f5b24d5480 Merge pull request #4816 from anthropics/bcherny-patch-3
Update claude-dedupe-issues.yml
2025-07-30 19:16:36 -07:00
Boris Cherny
07e6bec5ff Update claude-dedupe-issues.yml 2025-07-30 19:09:48 -07:00
GitHub Actions
cf8c6fdf2d chore: Update CHANGELOG.md 2025-07-30 21:49:14 +00:00
ant-kurt
d720bf7aba Merge pull request #4644 from shota-0129/shota-0129/feat-docker-dns-protection
feat: Add Docker DNS protection to firewall script
2025-07-30 10:56:41 -07:00
Kurt Carpenter
dde41f6225 fix: Handle missing Docker DNS rules gracefully in firewall script
Add error handling for grep when no Docker DNS rules exist, preventing
script failure on default Docker networks while still preserving DNS
functionality on custom networks.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 10:54:05 -07:00
shota-0129
78e0785950 simplify Docker DNS restoration using grep and xargs approach 2025-07-30 14:22:15 +09:00
GitHub Actions
b3658880e5 chore: Update CHANGELOG.md 2025-07-29 21:43:06 +00:00
Boris Cherny
9be8e07e92 Merge pull request #4710 from anthropics/boris/nvko
Add GitHub workflow to deduplicate issues
2025-07-29 11:36:52 -07:00
Boris Cherny
c904f0f409 Update .claude/commands/dedupe.md 2025-07-29 11:36:28 -07:00
Boris Cherny
6418cacb0b Add GitHub workflow to deduplicate issues and Claude configuration
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 11:05:36 -07:00
Ashwin Bhat
4fd2c49e8b Enable log output for lock stale issues workflow (#4698)
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-29 09:31:05 -07:00
Ashwin Bhat
48ed55b459 Add GitHub workflow to lock stale issues (#4602)
* Add GitHub workflow to lock stale issues

- Locks issues closed for 7+ days without activity
- Runs daily at 7am Pacific (2pm UTC)
- Includes manual workflow dispatch trigger
- Posts helpful comment before locking with guidance for new issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* PR feedback

* adjust params

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-29 09:11:39 -07:00
shota-0129
8b2cbe3f86 feat: Add Docker DNS protection to firewall script
- Extract Docker DNS NAT ports before iptables cleanup
- Restore Docker DNS NAT rules after iptables reset
- Maintains Docker container DNS functionality in network isolation
- Fixes connection refused errors to 127.0.0.11 in Docker environments

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 13:54:29 +09:00
ant-kurt
40251280cc Merge pull request #3938 from toshitanaa/fix-devcontainer-env-vars
fix: Use containerEnv for environment variables in devcontainer.json
2025-07-28 18:02:07 -07:00
ant-kurt
8f0379c698 Merge pull request #2448 from kowsik11/fix/pin-claude-version
Fix: Allow overriding Claude Code version in Dockerfile
2025-07-28 17:48:33 -07:00
ant-kurt
10c1ec5391 Merge branch 'main' into fix/pin-claude-version 2025-07-28 17:44:49 -07:00
Kurt Carpenter
6c7836e02f feat: Add CLAUDE_CODE_VERSION build arg to devcontainer.json
- Add CLAUDE_CODE_VERSION with default value of "latest" as a build argument
- Allows overriding Claude Code version during devcontainer build

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 17:42:35 -07:00
ant-kurt
6f6fc43c73 Merge pull request #3342 from toms74209200/main
Improve devcontainer Dockerfile following best practices
2025-07-28 16:44:23 -07:00
ant-kurt
944eb4eff6 Merge branch 'main' into main 2025-07-28 16:43:21 -07:00
ant-kurt
21df74bb49 Merge pull request #3678 from suwakei/fix/script
fix: Add check to run_devcontainer_claude_code.ps1 for the presence of required command
2025-07-28 16:20:19 -07:00
Kurt Carpenter
66ce673883 feat: Add CLAUDE_CODE_VERSION arg to devcontainer Dockerfile
- Add ARG CLAUDE_CODE_VERSION with default value of "latest"
- Update npm install command to use the version variable
- Allows overriding Claude Code version during build

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 16:09:53 -07:00
ant-kurt
07b198b9de Merge pull request #2101 from Masa1984a/fix/add-nano-to-devcontainer
fix: Add nano and vim editors to devcontainer with default editor config
2025-07-28 15:51:14 -07:00
GitHub Actions
8ad36c459c chore: Update CHANGELOG.md 2025-07-28 22:35:41 +00:00
GitHub Actions
b48dfb8e87 chore: Update CHANGELOG.md 2025-07-28 18:35:03 +00:00
Toshiyuki Tanaka
8e23e7d791 fix: Use containerEnv for environment variables in devcontainer.json
When launching dev containers via scripts (not through VS Code), remoteEnv
does not properly set environment variables. This causes NODE_OPTIONS,
CLAUDE_CONFIG_DIR, and POWERLEVEL9K_DISABLE_GITSTATUS to be undefined.

Changed remoteEnv to containerEnv to ensure environment variables are
correctly set regardless of how the container is launched.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 09:21:12 -07:00
keitosuwahara
9285dfbf2f Addition of check for presence of required commands 2025-07-17 13:05:39 +09:00
toms74209200
f91aed5440 Improve devcontainer Dockerfile following best practices
- Use apt-get instead of apt for better script compatibility
- Add --no-install-recommends to reduce image size
- Add cleanup to remove apt cache
- Parameterize external tool versions with build args
2025-07-11 22:51:14 +09:00
Kowsik Perumalla
46ca39c463 fix: pin Claude version in Dockerfile to avoid stale builds 2025-06-22 21:32:37 +05:30
Masa1984a
a6091b65c0 fix: Add nano and vim editors to devcontainer with default editor config
Fixes #2098

- Add nano and vim to provide editor choices for users
- Set EDITOR and VISUAL environment variables to nano as default
- This ensures /memory command and other tools work out of the box

Users can still change their preferred editor by setting these environment variables in their shell configuration.
2025-06-15 11:34:23 +09:00
8 changed files with 141 additions and 11 deletions

View File

@@ -0,0 +1,35 @@
---
allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(gh api:*), Bash(gh issue comment:*)
description: Find duplicate GitHub issues
---
Find up to 3 likely duplicate issues for a given GitHub issue.
To do this, follow these steps precisely:
1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed.
2. Use an agent to view a Github issue, and ask the agent to return a summary of the issue
3. Then, launch 5 parallel agents to search Github for duplicates of this issue, using diverse keywords and search approaches, using the summary from #1
4. Next, feed the results from #1 and #2 into another agent, so that it can filter out false positives, that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed.
5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates)
Notes (be sure to tell this to your agents, too):
- Use `gh` to interact with Github, rather than web fetch
- Do not use other tools, beyond `gh` (eg. don't use other MCP servers, file edit, etc.)
- Make a todo list first
- For your comment, follow the following format precisely (assuming for this example that you found 3 suspected duplicates):
---
Found 3 possible duplicate issues:
1. <link to issue>
2. <link to issue>
3. <link to issue>
If your issue is a duplicate, please close it and 👍 the existing issue instead.
🤖 Generated with [Claude Code](https://claude.ai/code)
---

View File

@@ -3,8 +3,11 @@ FROM node:20
ARG TZ
ENV TZ="$TZ"
ARG CLAUDE_CODE_VERSION=latest
# Install basic development tools and iptables/ipset
RUN apt update && apt install -y less \
RUN apt-get update && apt-get install -y --no-install-recommends \
less \
git \
procps \
sudo \
@@ -19,7 +22,10 @@ RUN apt update && apt install -y less \
iproute2 \
dnsutils \
aggregate \
jq
jq \
nano \
vim \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Ensure default node user has access to /usr/local/share
RUN mkdir -p /usr/local/share/npm-global && \
@@ -42,10 +48,11 @@ RUN mkdir -p /workspace /home/node/.claude && \
WORKDIR /workspace
ARG GIT_DELTA_VERSION=0.18.2
RUN ARCH=$(dpkg --print-architecture) && \
wget "https://github.com/dandavison/delta/releases/download/0.18.2/git-delta_0.18.2_${ARCH}.deb" && \
sudo dpkg -i "git-delta_0.18.2_${ARCH}.deb" && \
rm "git-delta_0.18.2_${ARCH}.deb"
wget "https://github.com/dandavison/delta/releases/download/${GIT_DELTA_VERSION}/git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
sudo dpkg -i "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
rm "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb"
# Set up non-root user
USER node
@@ -57,8 +64,13 @@ ENV PATH=$PATH:/usr/local/share/npm-global/bin
# Set the default shell to zsh rather than sh
ENV SHELL=/bin/zsh
# Set the default editor and visual
ENV EDITOR nano
ENV VISUAL nano
# Default powerline10k theme
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.0/zsh-in-docker.sh)" -- \
ARG ZSH_IN_DOCKER_VERSION=1.2.0
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \
-p git \
-p fzf \
-a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
@@ -67,7 +79,8 @@ RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/
-x
# Install Claude
RUN npm install -g @anthropic-ai/claude-code
RUN npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}
# Copy and set up firewall script
COPY init-firewall.sh /usr/local/bin/

View File

@@ -3,7 +3,10 @@
"build": {
"dockerfile": "Dockerfile",
"args": {
"TZ": "${localEnv:TZ:America/Los_Angeles}"
"TZ": "${localEnv:TZ:America/Los_Angeles}",
"CLAUDE_CODE_VERSION": "latest",
"GIT_DELTA_VERSION": "0.18.2",
"ZSH_IN_DOCKER_VERSION": "1.2.0"
}
},
"runArgs": [
@@ -41,7 +44,7 @@
"source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
"remoteEnv": {
"containerEnv": {
"NODE_OPTIONS": "--max-old-space-size=4096",
"CLAUDE_CONFIG_DIR": "/home/node/.claude",
"POWERLEVEL9K_DISABLE_GITSTATUS": "true"

View File

@@ -2,6 +2,9 @@
set -euo pipefail # Exit on error, undefined vars, and pipeline failures
IFS=$'\n\t' # Stricter word splitting
# 1. Extract Docker DNS info BEFORE any flushing
DOCKER_DNS_RULES=$(iptables-save -t nat | grep "127\.0\.0\.11" || true)
# Flush existing rules and delete existing ipsets
iptables -F
iptables -X
@@ -11,6 +14,16 @@ iptables -t mangle -F
iptables -t mangle -X
ipset destroy allowed-domains 2>/dev/null || true
# 2. Selectively restore ONLY internal Docker DNS resolution
if [ -n "$DOCKER_DNS_RULES" ]; then
echo "Restoring Docker DNS rules..."
iptables -t nat -N DOCKER_OUTPUT 2>/dev/null || true
iptables -t nat -N DOCKER_POSTROUTING 2>/dev/null || true
echo "$DOCKER_DNS_RULES" | xargs -L 1 iptables -t nat
else
echo "No Docker DNS rules to restore"
fi
# First allow DNS and localhost before any restrictions
# Allow outbound DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

View File

@@ -0,0 +1,25 @@
name: Claude Issue Dedupe
description: Automatically dedupe GitHub issues using Claude Code
on:
issues:
types: [opened]
jobs:
claude-dedupe-issues:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run Claude Code slash command
uses: anthropics/claude-code-base-action@beta
with:
prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number }}"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_env: |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -20,6 +20,7 @@ jobs:
with:
issue-inactive-days: "7"
process-only: "issues"
log-output: true
issue-comment: >
This issue has been automatically locked since it was
closed and has not had any activity for 7 days.

View File

@@ -1,8 +1,34 @@
# Changelog
## 1.0.64
- Agents: Added model customization support - you can now specify which model an agent should use
- Agents: Fixed unintended access to the recursive agent tool
- Hooks: Added systemMessage field to hook JSON output for displaying warnings and context
- SDK: Fixed user input tracking across multi-turn conversations
- Added hidden files to file search and @-mention suggestions
## 1.0.63
- Windows: Fixed file search, @agent mentions, and custom slash commands functionality
## 1.0.62
- Added @-mention support with typeahead for custom agents. @<your-custom-agent> to invoke it
- Hooks: Added SessionStart hook for new session initialization
- /add-dir command now supports typeahead for directory paths
- Improved network connectivity check reliability
## 1.0.61
- Added --settings flag to load settings from a JSON file
- Transcript mode (Ctrl+R): Changed Esc to exit transcript mode rather than interrupt
- Settings: Added `--settings` flag to load settings from a JSON file
- Settings: Fixed resolution of settings files paths that are symlinks
- OTEL: Fixed reporting of wrong organization after authentication changes
- Slash commands: Fixed permissions checking for allowed-tools with Bash
- IDE: Added support for pasting images in VSCode MacOS using ⌘+V
- IDE: Added `CLAUDE_CODE_AUTO_CONNECT_IDE=false` for disabling IDE auto-connection
- Added `CLAUDE_CODE_SHELL_PREFIX` for wrapping Claude and user-provided shell commands run by Claude Code
## 1.0.60
@@ -10,7 +36,6 @@
## 1.0.59
- Rename CLAUDE_CODE_BASH_PREFIX to CLAUDE_CODE_SHELL_PREFIX
- SDK: Added tool confirmation support with canUseTool callback
- SDK: Allow specifying env for spawned process
- Hooks: Exposed PermissionDecision to hooks (including "ask")

View File

@@ -37,6 +37,21 @@ param(
Write-Host "--- DevContainer Startup & Connection Script ---"
Write-Host "Using backend: $($Backend)"
# --- Prerequisite Check ---
Write-Host "Checking for required commands..."
try {
Get-Command $Backend -ErrorAction Stop | Out-Null
Write-Host "- $($Backend) command found."
Get-Command devcontainer -ErrorAction Stop | Out-Null
Write-Host "- devcontainer command found."
}
catch {
Write-Error "A required command is not installed or not in your PATH."
Write-Error "Please ensure '$($_.Exception.Message.Split(':')[0])' and 'devcontainer' are installed and accessible."
exit 1
}
# --- Backend-Specific Initialization ---
if ($Backend -eq 'podman') {
Write-Host "--- Podman Backend Initialization ---"