[INFO] cloning repository https://github.com/kornysietsma/claude-code-permissions-hook
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kornysietsma/claude-code-permissions-hook" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkornysietsma%2Fclaude-code-permissions-hook", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkornysietsma%2Fclaude-code-permissions-hook'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 56b9db4553e5eb1252ee36af0326e8d17627cb7e
[INFO] testing kornysietsma/claude-code-permissions-hook against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkornysietsma%2Fclaude-code-permissions-hook" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kornysietsma/claude-code-permissions-hook
[INFO] finished tweaking git repo https://github.com/kornysietsma/claude-code-permissions-hook
[INFO] tweaked toml for git repo https://github.com/kornysietsma/claude-code-permissions-hook written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kornysietsma/claude-code-permissions-hook on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kornysietsma/claude-code-permissions-hook already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e
[INFO] running `Command { std: "docker" "start" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling unicode-ident v1.0.26
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling aho-corasick v1.1.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling clap_lex v1.1.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling bstr v1.13.1
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling globset v0.4.20
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling tool-gate-hook v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 26s
[INFO] running `Command { std: "docker" "inspect" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tool-gate-hook v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 20.22s
[INFO] running `Command { std: "docker" "inspect" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.11s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/tool-gate-hook/dfb8c004178c471e/out/tool_gate_hook-dfb8c004178c471e)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test paths::tests::remainder_is_cleaned_up_without_escaping_root ... ok
[INFO] [stdout] test agent::tests::default_config_path_is_per_agent_under_home ... ok
[INFO] [stdout] test paths::tests::expand_dir_handles_home_and_cwd ... ok
[INFO] [stdout] test auditing::tests::length_counts_characters_not_bytes ... ok
[INFO] [stdout] test auditing::tests::short_strings_are_unchanged ... ok
[INFO] [stdout] test auditing::tests::long_strings_are_cut_and_marked_with_the_original_length ... ok
[INFO] [stdout] test auditing::tests::nested_strings_are_cut_and_other_values_are_unchanged ... ok
[INFO] [stdout] test auditing::tests::zero_disables_truncation ... ok
[INFO] [stdout] test policy::tests::lookup_walks_nested_objects ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/tool-gate-hook/95c914f6d3e3b0d0/out/tool_gate_hook-95c914f6d3e3b0d0)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/audit.rs (/opt/rustwide/target/release/build/tool-gate-hook/f815ad61588d90e3/out/audit-f815ad61588d90e3)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test allow_record_has_every_field ... ok
[INFO] [stdout] test ask_decision_is_recorded ... ok
[INFO] [stdout] test error_record_stdin_is_truncated ... ok
[INFO] [stdout] test error_records_are_not_written_when_audit_is_off ... ok
[INFO] [stdout] test bad_payload_with_a_broken_config_warns_without_asking_or_recording ... ok
[INFO] [stdout] test malformed_stdin_gives_an_error_record_with_the_raw_text ... ok
[INFO] [stdout] test matched_level_records_decisions ... ok
[INFO] [stdout] test max_value_len_zero_keeps_the_full_content ... ok
[INFO] [stdout] test passthrough_is_not_recorded_at_matched_level ... ok
[INFO] [stdout] test passthrough_is_recorded_at_all_level_without_decided_by ... ok
[INFO] [stdout] test payload_for_another_agent_gives_an_error_record_with_the_raw_text ... ok
[INFO] [stdout] test default_max_value_len_is_1024 ... ok
[INFO] [stderr]      Running tests/claude.rs (/opt/rustwide/target/release/build/tool-gate-hook/2657f15ae4a3297d/out/claude-2657f15ae4a3297d)
[INFO] [stdout] test deny_wins_and_all_matches_are_recorded_in_file_order ... ok
[INFO] [stdout] test long_strings_are_truncated_but_every_key_is_kept ... ok
[INFO] [stdout] test no_audit_section_records_nothing ... ok
[INFO] [stdout] test off_level_records_nothing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 28 tests
[INFO] [stdout] test all_match_entries_must_pass ... ok
[INFO] [stdout] test copilot_payload_passes_through_with_a_warning_even_if_config_is_broken ... ok
[INFO] [stdout] test ask_beats_allow_and_reason_names_first_rule_of_winning_tier ... ok
[INFO] [stdout] test allow_output_is_the_claude_hook_shape ... ok
[INFO] [stdout] test config_error_asks_with_the_error_as_reason ... ok
[INFO] [stdout] test deny_beats_allow_regardless_of_file_order ... ok
[INFO] [stdout] test equals_matches_the_whole_value_only ... ok
[INFO] [stdout] test every_matching_rule_is_recorded_in_file_order ... ok
[INFO] [stdout] test exists_checks_presence_including_absence ... ok
[INFO] [stdout] test glob_matches_paths_and_star_does_not_cross_directories ... ok
[INFO] [stdout] test invalid_glob_is_a_config_error ... ok
[INFO] [stdout] test missing_config_file_asks ... ok
[INFO] [stdout] test invalid_json_passes_through_with_a_warning ... ok
[INFO] [stdout] test missing_field_means_no_match ... ok
[INFO] [stdout] test no_matching_rule_passes_through ... ok
[INFO] [stdout] test not_regex_exclusion_passes_through_rather_than_denying ... ok
[INFO] [stdout] test numbers_and_booleans_match_as_json_text_but_objects_never_do ... ok
[INFO] [stdout] test regex_list_matches_if_any_item_matches ... ok
[INFO] [stdout] test rules_can_target_subagents ... ok
[INFO] [stdout] test rules_can_target_the_subagent_handback_event ... ok
[INFO] [stdout] test several_matchers_on_one_field_must_all_pass ... ok
[INFO] [stdout] test successful_decisions_have_no_warnings ... ok
[INFO] [stdout] test under_allows_existing_and_not_yet_existing_files_inside_the_directory ... ok
[INFO] [stdout] test tool_name_must_match_completely ... ok
[INFO] [stdout] test under_compares_whole_path_components ... ok
[INFO] [stdout] test under_follows_symlinks_out_of_the_directory ... ok
[INFO] [stdout] test under_expands_cwd_and_home_and_resolves_relative_values_against_cwd ... ok
[INFO] [stdout] test under_is_not_fooled_by_parent_directory_segments ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/config.rs (/opt/rustwide/target/release/build/tool-gate-hook/b4d0231edebe2140/out/config-b4d0231edebe2140)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test tool_regex_is_anchored ... ok
[INFO] [stderr]      Running tests/copilot.rs (/opt/rustwide/target/release/build/tool-gate-hook/0706f81b252ff43a/out/copilot-0706f81b252ff43a)
[INFO] [stdout] test invalid_regex_names_the_rule_and_field ... ok
[INFO] [stdout] test unknown_pattern_names_the_rule_and_pattern ... ok
[INFO] [stdout] test misspelt_matcher_key_names_the_rule_and_key ... ok
[INFO] [stdout] test invalid_named_pattern_is_an_error_even_if_unused ... ok
[INFO] [stdout] test audit_section_is_optional_and_defaults_apply ... ok
[INFO] [stdout] test valid_config_compiles_rules_in_file_order ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test copilot_payload_under_claude_passes_through ... ok
[INFO] [stdout] test claude_payload_under_copilot_passes_through_even_with_a_broken_config ... ok
[INFO] [stdout] test config_error_asks_in_copilot_format ... ok
[INFO] [stdout] test deny_and_ask_always_carry_a_reason ... ok
[INFO] [stdout] test claude_agent_accepts_what_copilot_sends_to_a_claude_hook ... ok
[INFO] [stdout] test tool_names_are_case_sensitive ... ok
[INFO] [stdout] test allow_output_is_the_flat_copilot_shape ... ok
[INFO] [stdout] test view_and_create_both_carry_their_file_in_path ... ok
[INFO] [stdout] test rules_can_match_tool_args_and_cwd ... ok
[INFO] [stderr]      Running tests/examples.rs (/opt/rustwide/target/release/build/tool-gate-hook/99b7fb5c174f9edc/out/examples-99b7fb5c174f9edc)
[INFO] [stdout] test rules_can_match_a_patch_given_as_a_string ... ok
[INFO] [stdout] test every_fixture_is_parsed_and_matched_by_its_lowercase_tool_name ... ok
[INFO] [stdout] test search_tools_carry_their_directory_in_paths ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test mermaid_parent_directory_escapes_fall_through_to_the_user ... ok
[INFO] [stdout] test mermaid_chained_commands_fall_through_to_the_user ... ok
[INFO] [stdout] test mermaid_unlisted_tools_fall_through_to_the_user ... ok
[INFO] [stdout] test every_example_is_valid_for_its_agent_without_warnings ... ok
[INFO] [stdout] test mermaid_allows_the_narrow_workflow ... ok
[INFO] [stdout] test uv_and_unrelated_commands_are_not_denied_as_legacy_python ... ok
[INFO] [stdout] test legacy_python_commands_are_denied_wherever_a_command_starts ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke.rs (/opt/rustwide/target/release/build/tool-gate-hook/b3fe95a40fb92914/out/smoke-b3fe95a40fb92914)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test copilot_run_asks_and_exits_zero_when_config_is_missing ... ok
[INFO] [stdout] test run_uses_default_config_under_home ... ok
[INFO] [stdout] test agent_flag_is_required ... ok
[INFO] [stdout] test run_passes_through_and_exits_zero_on_garbage_stdin ... ok
[INFO] [stdout] test copilot_run_exits_zero_on_claude_payload ... ok
[INFO] [stdout] test run_appends_one_json_line_per_call_to_the_audit_file ... ok
[INFO] [stdout] test unwritable_audit_file_only_warns ... ok
[INFO] [stdout] test validate_fails_on_a_broken_config ... ok
[INFO] [stdout] test validate_fails_when_config_is_missing ... ok
[INFO] [stdout] test run_asks_and_exits_zero_when_config_is_missing ... ok
[INFO] [stdout] test validate_prints_a_summary_of_a_valid_config ... ok
[INFO] [stdout] test validate_warns_about_field_paths_unknown_to_the_agent_without_failing ... ok
[INFO] [stdout] test validate_summary_says_so_when_there_is_no_audit_or_patterns ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests tool_gate_hook
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e", kill_on_drop: false }`
[INFO] [stdout] 9287bfdf585734d355a34328d4be5fdbeceae236809cd4e4de189432670b415e
