Skip to content

Commit 1123db3

Browse files
authored
Merge pull request #114 from neubig/fix-reward-hacking-git-history
fix: use shallow clone to prevent reward hacking via git history
2 parents 4bbfa86 + 118bf36 commit 1123db3

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

.github/workflows/system.yml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,13 @@ jobs:
2525
- name: Get tests
2626
run: uv run commit0 get-tests simpy
2727
- name: Test
28-
env:
29-
MODAL_TOKEN_ID: ${{secrets.MODAL_TOKEN_ID}}
30-
MODAL_TOKEN_SECRET: ${{secrets.MODAL_TOKEN_SECRET}}
3128
run: |
32-
uv run commit0 test simpy tests/test_event.py::test_succeed --reference --rebuild
33-
uv run commit0 test simpy tests/test_event.py::test_succeed --reference
29+
uv run commit0 test simpy tests/test_event.py::test_succeed --reference --rebuild --backend local
30+
uv run commit0 test simpy tests/test_event.py::test_succeed --reference --backend local
3431
- name: Evaluate
35-
env:
36-
MODAL_TOKEN_ID: ${{secrets.MODAL_TOKEN_ID}}
37-
MODAL_TOKEN_SECRET: ${{secrets.MODAL_TOKEN_SECRET}}
3832
run: |
39-
uv run commit0 evaluate --reference --rebuild
40-
uv run commit0 evaluate --reference
33+
uv run commit0 evaluate --reference --rebuild --backend local
34+
uv run commit0 evaluate --reference --backend local
4135
- name: Lint
4236
run: uv run commit0 lint commit0/harness/
4337
- name: Save

commit0/harness/spec.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,13 @@ def make_repo_script_list(self) -> list[str]:
114114
base_commit = self.instance["base_commit"]
115115

116116
setup_commands = [
117-
f"git clone -o origin https://github.com/{repo} {self.repo_directory}",
117+
# Use --depth 1 for shallow clone to prevent agents from accessing
118+
# git history and exploiting it to retrieve original implementations
119+
f"git clone --depth 1 -o origin https://github.com/{repo} {self.repo_directory}",
118120
f"chmod -R 777 {self.repo_directory}", # So nonroot user can run tests
119121
f"cd {self.repo_directory}",
122+
# Fetch both commits needed: env_setup_commit for setup and base_commit for later reset
123+
f"git fetch --depth 1 origin {env_setup_commit} {base_commit}",
120124
f"git reset --hard {env_setup_commit}",
121125
# Remove the remote so the agent won't see newer commits.
122126
"git remote remove origin",
@@ -217,10 +221,15 @@ def make_repo_script_list(self) -> list[str]:
217221
if version < 7:
218222
specs["python"] = 3.7
219223

224+
base_commit = self.instance["base_commit"]
220225
setup_commands = [
221-
f"git clone -o origin https://github.com/{repo} {self.repo_directory}",
226+
# Use --depth 1 for shallow clone to prevent agents from accessing
227+
# git history and exploiting it to retrieve original implementations
228+
f"git clone --depth 1 -o origin https://github.com/{repo} {self.repo_directory}",
222229
f"chmod -R 777 {self.repo_directory}", # So nonroot user can run tests
223230
f"cd {self.repo_directory}",
231+
# Fetch base_commit needed for eval script reset
232+
f"git fetch --depth 1 origin {base_commit}",
224233
# Remove the remote so the agent won't see newer commits.
225234
"git remote remove origin",
226235
f"uv venv --python {specs['python']}",

0 commit comments

Comments
 (0)