pytorch - 💡(How to fix) Fix `torch.compile(dynamic=True)` backward fails with `InductorError: CantSplit` on chained residual blocks scattering into a wider buffer
ON THIS PAGE
Recommended Tools
×6Utilities matched from this issue’s tags and category — try them while you read without losing context.
GitHub issue graph ai analysis
Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.
The report is written in English Markdown for sharing and archival.
Helpful · Quick feedback
Error Message
Torch version: 2.12.0+cu130 Testing eager mode... Eager mode OK Testing compiled mode... W0514 09:49:45.276000 2955 torch/_inductor/utils.py:1717] [0/0] Not enough SMs to use max_autotune_gemm mode
InductorError Traceback (most recent call last) /tmp/ipykernel_2955/4129170816.py in <cell line: 0>() 28 print("Eager mode OK") 29 print("Testing compiled mode...") ---> 30 torch.compile(M().to(dev), fullgraph=True, dynamic=True)(a, b).backward() 31 print("Compiled mode OK")
61 frames /usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py in call(self, *args, **kwargs) 471 ) 472 with _set_in_optimized_module(): --> 473 return super().call(*args, **kwargs) 474 475 def _aot_compile(self, inputs: list[torch._dynamo.aot_compile.ModelInput]) -> None:
/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _wrapped_call_impl(self, *args, **kwargs) 1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1777 else: -> 1778 return self._call_impl(*args, **kwargs) 1779 1780 # torchrec tests the code consistency with the following code
/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs) 1787 or _global_backward_pre_hooks or _global_backward_hooks 1788 or _global_forward_hooks or _global_forward_pre_hooks): -> 1789 return forward_call(*args, **kwargs) 1790 1791 result = None
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py in compile_wrapper(*args, **kwargs) 1060 # Failures in the backend likely don't have useful 1061 # data in the TorchDynamo frames, so we strip them out. -> 1062 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1 1063 finally: 1064 # Restore the dynamic layer stack depth if necessary.
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py in compile_wrapper(*args, **kwargs) 1045 call_succeeded = False 1046 try: -> 1047 result = fn(*args, **kwargs) 1048 call_succeeded = True 1049 except (Unsupported, UncapturedHigherOrderOpError, UserError) as e:
/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _wrapped_call_impl(self, *args, **kwargs) 1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1777 else: -> 1778 return self._call_impl(*args, **kwargs) 1779 1780 # torchrec tests the code consistency with the following code
/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs) 1787 or _global_backward_pre_hooks or _global_backward_hooks 1788 or _global_forward_hooks or _global_forward_pre_hooks): -> 1789 return forward_call(*args, **kwargs) 1790 1791 result = None
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in call(self, frame, cache_entry, frame_state) 2472 with compile_lock, _disable_current_modes(): 2473 # skip=1: skip this frame -> 2474 result = self._torchdynamo_orig_backend( 2475 frame, cache_entry, self.hooks, frame_state, skip=1 2476 )
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in call(self, frame, cache_entry, hooks, frame_state, skip) 734 ) 735 with compile_ctx, recompile_ctx: --> 736 result = _compile( 737 frame.f_code, 738 frame.f_globals,
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in _compile(code, globals, locals, builtins, closure, compiler_fn, one_graph, export, export_constraints, hooks, cache_entry, cache_size, frame, frame_state, compile_id, skip, package, convert_frame_box) 1959 1960 try: -> 1961 guarded_code, tracer_output = compile_inner(code, one_graph, hooks) 1962 1963 # NB: We only put_code_state in success case. Success case here
/usr/local/lib/python3.12/dist-packages/torch/_utils_internal.py in wrapper_function(*args, **kwargs) 94 # in stack traces when profiling is not enabled. 95 if not StrobelightCompileTimeProfiler.enabled: ---> 96 return function(*args, **kwargs) 97 98 return StrobelightCompileTimeProfiler.profile_compile_time(
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in compile_inner(code, one_graph, hooks) 1569 stack.enter_context(CompileTimeInstructionCounter.record()) 1570 stack.enter_context(torch_function_mode_stack_state_mgr) -> 1571 result = _compile_inner(code, one_graph, hooks) 1572 assert torch._C._len_torch_function_stack() == 0, ( 1573 "Torch function mode stack state changed while dynamo tracing, please report a bug"
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in _compile_inner(code, one_graph, hooks) 1628 else contextlib.nullcontext() 1629 ): -> 1630 dynamo_output = compile_frame( 1631 code, 1632 globals,
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in compile_frame(code, globals, locals, builtins, closure, compiler_fn, one_graph, restart_reasons, export, export_constraints, frame_state, distributed_state, package) 1476 try: 1477 with dynamo_timed(f"compile_attempt_{attempt}", log_pt2_compile_event=True): -> 1478 bytecode, tracer_output = transform_code_object(code, transform) 1479 assert tracer_output is not None 1480 return DynamoOutput(
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/bytecode_transformation.py in transform_code_object(code, transformations, safe) 1624 propagate_line_nums(instructions) 1625 -> 1626 tracer_output = transformations(instructions, code_options) 1627 _, bytecode = clean_and_assemble_instructions(instructions, keys, code_options) 1628 return bytecode, tracer_output
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in transform(instructions, code_options) 1448 torch_function_mode_stack_state_mgr.stack 1449 ) -> 1450 tracer_output = trace_frame( 1451 code, 1452 globals,
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in _fn(*args, **kwargs) 341 reset_user_object_tracking() 342 try: --> 343 return fn(*args, **kwargs) 344 finally: 345 cleanup.close()
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in trace_frame(code, globals, locals, builtins, closure, compiler_fn, tf_mode_stack, one_graph, speculation_log, instructions, code_options, export, export_constraints, frame_state, distributed_state, package) 909 910 try: --> 911 run_tracer() 912 tracer_output = DynamoTracerOutput(tracer) 913 output = tracer_output.output_graph
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py in run_tracer() 890 tracer.output.mark_bytecode_tracing_start() 891 with tracing(tracer.output.tracing_context), tracer.set_current_tx(): --> 892 tracer.run() 893 except exc.UnspecializeRestartAnalysis: 894 speculation_log.clear() # type: ignore[has-type]
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py in run(self) 1811 self.start_point = self.instruction_pointer 1812 try: -> 1813 while self.step(): 1814 pass 1815 except Exception as e:
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py in step(self) 1478 1479 try: -> 1480 self.dispatch_table[inst.opcode](self, inst) 1481 return not self.output.should_exit 1482 except TensorifyScalarRestartAnalysis:
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py in RETURN_VALUE(self, inst) 5141 5142 def RETURN_VALUE(self, inst: Instruction) -> None: -> 5143 self._return(inst) 5144 5145 def RETURN_CONST(self, inst: Instruction) -> None:
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py in _return(self, inst) 5123 ) 5124 log.debug("return triggered compile") -> 5125 all_stack_locals_metadata = self.output.compile_subgraph( 5126 self, 5127 reason=GraphCompileReason(
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py in compile_subgraph(self, tx, reason, stack_pops) 2111 if count_calls(self.graph) != 0 or len(pass2.graph_outputs) != 0: 2112 output.extend( -> 2113 self.compile_and_call_fx_graph(tx, pass2.graph_output_vars(), root) 2114 ) 2115
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py in compile_and_call_fx_graph(self, tx, rv, root) 2726 2727 with self.restore_global_state(): -> 2728 compiled_fn = self.call_user_compiler(gm, self.example_inputs()) 2729 2730 from torch.fx._lazy_graph_module import _LazyGraphModule
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py in call_user_compiler(self, gm, example_inputs) 2893 dynamo_compile_column_us="aot_autograd_cumulative_compile_time_us", 2894 ): -> 2895 return self._call_user_compiler(gm, example_inputs) 2896 2897 def _call_user_compiler(
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py in _call_user_compiler(self, gm, example_inputs) 2951 if config.verify_correctness: 2952 compiler_fn = WrapperBackend(compiler_fn) -> 2953 compiled_fn = compiler_fn(gm, example_inputs) 2954 _step_logger()(logging.INFO, f"done compiler function {name}") 2955 assert callable(compiled_fn), "compiler_fn did not return callable"
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_dynamo.py in call(self, gm, example_inputs, **kwargs) 154 raise 155 else: --> 156 compiled_gm = compiler_fn(gm, example_inputs) 157 158 return compiled_gm # type: ignore[return-value]
/usr/local/lib/python3.12/dist-packages/torch/init.py in call(self, model_, inputs_, config_patches) 2480 2481 all_patches = {**self.config, **(config_patches or {})} -> 2482 return compile_fx( 2483 model_, 2484 inputs_,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in compile_fx(model_, example_inputs_, inner_compile, config_patches, decompositions, ignore_shape_env, compile_region_name) 2732 ) 2733 -> 2734 return maybe_wrap_and_compile_fx_main( 2735 model, 2736 example_inputs_,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in maybe_wrap_and_compile_fx_main(model, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name) 2813 2814 # Finally do the actual work! -> 2815 return compile_fx_main( 2816 model, 2817 example_inputs_,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in compile_fx_main(model, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name) 3026 # We will also shorten the traceback inside dynamo. 3027 # This is only useful if inductor is called directly with an FX graph. -> 3028 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1 3029 3030
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in compile_fx_main(model, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name) 3011 ): 3012 try: -> 3013 return dynamo_common.aot_autograd( 3014 fw_compiler=fw_compiler, 3015 bw_compiler=bw_compiler,
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/backends/common.py in call(self, gm, example_inputs, **kwargs) 121 # NB: NOT cloned! 122 with enable_aot_logging(), patch_config: --> 123 cg = aot_module_simplified(gm, example_inputs, **self.kwargs) 124 counters["aot_autograd"]["ok"] += 1 125 return disable(cg, reason="do not trace AOT-compiled graph")
/usr/local/lib/python3.12/dist-packages/torch/_functorch/aot_autograd.py in aot_module_simplified(mod, args, fw_compiler, bw_compiler, partition_fn, decompositions, keep_inference_input_mutations, inference_compiler, compiler_config_extra, ignore_shape_env, disable_functionalization, pre_grad_passes, compile_region_name) 1232 aot_state.fw_metadata.act_input_indices = act_input_indices 1233 aot_graph_capture = aot_stage1_graph_capture(aot_state, functional_call) -> 1234 compiled_fn, _ = aot_stage2_compile( 1235 aot_state, 1236 aot_graph_capture,
/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py in aot_stage2_compile(aot_state, aot_graph_capture, partition_fn, fw_compiler, bw_compiler, inference_compiler) 376 377 if aot_state.needs_autograd and not aot_state.aot_config.pre_dispatch: --> 378 return aot_stage2_autograd(aot_state, aot_graph_capture) 379 else: 380 return aot_stage2_inference(aot_state, aot_graph_capture)
/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py in aot_stage2_autograd(aot_state, aot_graph_capture) 2284 ) 2285 -> 2286 fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile( 2287 fw_module, 2288 adjusted_flat_args,
/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py in _aot_stage2b_fw_compile(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, num_fw_outs_saved_for_bw, aot_config) 2073 # pyrefly: ignore [implicit-any] 2074 ) -> tuple[list[tuple[int, ...] | None] | None, Callable]: -> 2075 return _aot_stage2b_compile_forward_or_inference( 2076 fw_module, 2077 adjusted_flat_args,
/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py in _aot_stage2b_compile_forward_or_inference(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, aot_config, is_inference, num_fw_outs_saved_for_bw) 2601 with TracingContext.report_output_strides() as fwd_output_strides: 2602 # pyrefly: ignore[not-callable] -> 2603 compiled_fw_func = compiler(fw_module, adjusted_flat_args) 2604 2605 # Make boxed if needed
/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/schemas.py in call(self, gm, example_inputs) 1419 example_inputs: Sequence[InputType], 1420 ) -> OutputCode: -> 1421 output_code = self.compiler_fn(gm, example_inputs) 1422 return output_code 1423
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in fw_compiler_base(gm, example_inputs, is_inference) 2874 else: 2875 num_orig_model_outputs = get_num_model_outputs(gm) -> 2876 return compile_fx_forward( 2877 gm, 2878 example_inputs,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in compile_fx_forward(gm, example_inputs, num_orig_model_outputs, num_example_inputs, compiler_config_extra, inner_compile, is_inference) 2502 2503 with cudagraph_annotation_context(compiler_config_extra.cudagraphs): -> 2504 result = inner_compile( 2505 gm, 2506 example_inputs,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in compile_fx_inner(gm, example_inputs, compile_region_name, **kwargs) 825 is_backward=kwargs["is_backward"], 826 ) --> 827 return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")( 828 gm, 829 example_inputs,
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_aot.py in debug_wrapper(gm, example_inputs, compile_region_name, **kwargs) 312 # Call the compiler_fn - which is either aot_autograd or inductor 313 # with fake inputs --> 314 inner_compiled_fn = compiler_fn(gm, example_inputs) 315 except Exception: 316 # TODO: Failures here are troublesome because no real inputs,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs) 1067 raise 1068 except Exception as e: -> 1069 raise InductorError(e, currentframe()).with_traceback( 1070 e.traceback 1071 ) from None
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs) 1047 TritonBundler.begin_compile() 1048 try: -> 1049 mb_compiled_graph = fx_codegen_and_compile( 1050 gm, 1051 example_inputs,
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in fx_codegen_and_compile(gm, example_inputs, inputs_to_check, compile_region_name, **graph_kwargs) 1834 1835 # pyrefly: ignore [unbound-name] -> 1836 return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs) 1837 1838
/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py in codegen_and_compile(self, gm, example_inputs, inputs_to_check, graph_kwargs) 1595 ) 1596 else: -> 1597 compiled_module = graph.compile_to_module() 1598 compiled_fn = compiled_module.call 1599 compiled_fn_runner = getattr(
/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py in compile_to_module(self) 2611 dynamo_compile_column_us="inductor_code_gen_cumulative_compile_time_us", 2612 ): -> 2613 return self._compile_to_module() 2614 2615 def _compile_to_module(self) -> CompiledModule:
/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py in _compile_to_module(self) 2617 # returned separately in AOTInductor mode. 2618 wrapper_code, _ = ( -> 2619 self.codegen_with_cpp_wrapper() if self.cpp_wrapper else self.codegen() 2620 ) 2621
/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py in codegen(self) 2553 2554 self.wrapper_code.push_codegened_graph(self) -> 2555 self.scheduler.codegen() 2556 2557 log.debug(
/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py in codegen(self) 7348 with dynamo_timed("Scheduler.codegen"): 7349 return ( -> 7350 self._codegen_partitions() 7351 if torch._inductor.config.graph_partition 7352 else self._codegen(self.nodes)
/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py in _codegen_partitions(self) 7488 7489 if signature.skip_cudagraph: -> 7490 self._codegen(partition) 7491 else: 7492 self._codegen_partition_wrapper(partition, signature)
/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py in _codegen(self, nodes) 7639 elif isinstance(node, (FusedSchedulerNode, SchedulerNode)): 7640 # pyrefly: ignore [unbound-name] -> 7641 self.get_backend(device).codegen_node(node) 7642 else: 7643 assert isinstance(node, NopKernelSchedulerNode)
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/cuda_combined_scheduling.py in codegen_node(self, node) 150 151 def codegen_node(self, node: FusedSchedulerNode | SchedulerNode) -> None: --> 152 return self._triton_scheduling.codegen_node(node) 153 154 def codegen_sync(self) -> None:
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in codegen_node(self, node) 1862 coalesce_analysis = None 1863 -> 1864 return self._codegen_nodes(nodes, coalesce_analysis) # type: ignore[arg-type] 1865 1866 @staticmethod
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in _codegen_nodes(self, nodes, coalesce_analysis) 1835 schedule_log.debug("Schedule:\n %s", node_schedule) 1836 -> 1837 return self.codegen_node_schedule( 1838 SIMDKernelFeatures(node_schedule, numel, rnumel, coalesce_analysis) 1839 )
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in codegen_node_schedule(self, kernel_features) 1950 ) 1951 for kernel in kernels: -> 1952 self.codegen_node_schedule_with_kernel(node_schedule, kernel) 1953 MultiKernel.merge_workspaces_inplace(kernels) 1954
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in codegen_node_schedule_with_kernel(self, node_schedule, kernel) 2043 else: 2044 node.decide_inplace_update() -> 2045 index_vars = kernel.split_and_set_ranges(node.get_ranges()) 2046 all_indexing.update( 2047 dict.fromkeys(
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in split_and_set_ranges(self, lengths) 941 # Map the kernel's group structure to the node's sizes and set the ranges 942 # using the set_ranges method, returning the resulting iteration variables --> 943 return self.map_kernel_groups_to_node_sizes(groups, lengths, self.set_ranges) 944 945 @classmethod
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in map_kernel_groups_to_node_sizes(cls, groups, lengths, set_ranges) 968 return set_ranges(*lengths) 969 --> 970 new_ranges, return_getters_groups = cls._split_iteration_ranges(groups, lengths) 971 itervars = [*itertools.chain.from_iterable(set_ranges(*new_ranges))] 972 return [[fn(itervars) for fn in fns] for fns in return_getters_groups]
/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py in _split_iteration_ranges(groups, lengths) 845 size, remaining[current_group] 846 ): --> 847 raise CantSplit(size, remaining[current_group]) 848 849 size1 = remaining[current_group]
InductorError: CantSplit: 128s52((s97//s52)) + 128*((s97//s52)) not divisible by s52*((s97//s52)) + ((s97//s52))
Root Cause
/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_aot.py in debug_wrapper(gm, example_inputs, compile_region_name, **kwargs) 312 # Call the compiler_fn - which is either aot_autograd or inductor 313 # with fake inputs --> 314 inner_compiled_fn = compiler_fn(gm, example_inputs) 315 except Exception: 316 # TODO: Failures here are troublesome because no real inputs,
Fix Action
Fix / Workaround
"""
Previous cell: !pip install --upgrade torch torchvision torchaudio
"""
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in step(self)
1478
1479 try:
-> 1480 self.dispatch_table[inst.opcode](self, inst)
1481 return not self.output.should_exit
1482 except TensorifyScalarRestartAnalysis:
[/usr/local/lib/python3.12/dist-packages/torch/__init__.py](https://localhost:8080/#) in __call__(self, model_, inputs_, config_patches)
2480
2481 all_patches = {**self.config, **(config_patches or {})}
-> 2482 return compile_fx(
2483 model_,
2484 inputs_,Code Example
"""
Previous cell: !pip install --upgrade torch torchvision torchaudio
"""
import os
os.environ["TORCHDYNAMO_VERBOSE"] = "1"
import torch
print("Torch version:", torch.__version__) # Torch version: 2.12.0+cu130
class M(torch.nn.Module):
def __init__(self, d=128):
super().__init__()
self.n1 = torch.nn.RMSNorm(d)
self.l1 = torch.nn.Linear(d, d, bias=False)
self.n2 = torch.nn.RMSNorm(d)
self.l2 = torch.nn.Linear(d, d, bias=False)
def forward(self, a, b):
m = a.shape[0] // b.shape[0]
out = torch.zeros(m * (b.shape[0] + 1), a.shape[-1], device=a.device)
out[: a.shape[0]] = a
out = out + self.l1(self.n1(out))
out = out + self.l2(self.n2(out))
return out.sum()
dev = "cuda"
a, b = torch.randn(21, 128, device=dev), torch.randn(7, device=dev)
print("Testing eager mode...")
M().to(dev)(a, b).backward()
print("Eager mode OK")
print("Testing compiled mode...")
torch.compile(M().to(dev), fullgraph=True, dynamic=True)(a, b).backward() # Crashes
print("Compiled mode OK")
---
Torch version: 2.12.0+cu130
Testing eager mode...
Eager mode OK
Testing compiled mode...
W0514 09:49:45.276000 2955 torch/_inductor/utils.py:1717] [0/0] Not enough SMs to use max_autotune_gemm mode
---------------------------------------------------------------------------
InductorError Traceback (most recent call last)
[/tmp/ipykernel_2955/4129170816.py](https://localhost:8080/#) in <cell line: 0>()
28 print("Eager mode OK")
29 print("Testing compiled mode...")
---> 30 torch.compile(M().to(dev), fullgraph=True, dynamic=True)(a, b).backward()
31 print("Compiled mode OK")
61 frames
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in __call__(self, *args, **kwargs)
471 )
472 with _set_in_optimized_module():
--> 473 return super().__call__(*args, **kwargs)
474
475 def _aot_compile(self, inputs: list[torch._dynamo.aot_compile.ModelInput]) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _wrapped_call_impl(self, *args, **kwargs)
1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1777 else:
-> 1778 return self._call_impl(*args, **kwargs)
1779
1780 # torchrec tests the code consistency with the following code
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _call_impl(self, *args, **kwargs)
1787 or _global_backward_pre_hooks or _global_backward_hooks
1788 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1789 return forward_call(*args, **kwargs)
1790
1791 result = None
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in compile_wrapper(*args, **kwargs)
1060 # Failures in the backend likely don't have useful
1061 # data in the TorchDynamo frames, so we strip them out.
-> 1062 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1
1063 finally:
1064 # Restore the dynamic layer stack depth if necessary.
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in compile_wrapper(*args, **kwargs)
1045 call_succeeded = False
1046 try:
-> 1047 result = fn(*args, **kwargs)
1048 call_succeeded = True
1049 except (Unsupported, UncapturedHigherOrderOpError, UserError) as e:
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _wrapped_call_impl(self, *args, **kwargs)
1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1777 else:
-> 1778 return self._call_impl(*args, **kwargs)
1779
1780 # torchrec tests the code consistency with the following code
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _call_impl(self, *args, **kwargs)
1787 or _global_backward_pre_hooks or _global_backward_hooks
1788 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1789 return forward_call(*args, **kwargs)
1790
1791 result = None
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in __call__(self, frame, cache_entry, frame_state)
2472 with compile_lock, _disable_current_modes():
2473 # skip=1: skip this frame
-> 2474 result = self._torchdynamo_orig_backend(
2475 frame, cache_entry, self.hooks, frame_state, skip=1
2476 )
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in __call__(self, frame, cache_entry, hooks, frame_state, skip)
734 )
735 with compile_ctx, recompile_ctx:
--> 736 result = _compile(
737 frame.f_code,
738 frame.f_globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _compile(code, globals, locals, builtins, closure, compiler_fn, one_graph, export, export_constraints, hooks, cache_entry, cache_size, frame, frame_state, compile_id, skip, package, convert_frame_box)
1959
1960 try:
-> 1961 guarded_code, tracer_output = compile_inner(code, one_graph, hooks)
1962
1963 # NB: We only put_code_state in success case. Success case here
[/usr/local/lib/python3.12/dist-packages/torch/_utils_internal.py](https://localhost:8080/#) in wrapper_function(*args, **kwargs)
94 # in stack traces when profiling is not enabled.
95 if not StrobelightCompileTimeProfiler.enabled:
---> 96 return function(*args, **kwargs)
97
98 return StrobelightCompileTimeProfiler.profile_compile_time(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in compile_inner(code, one_graph, hooks)
1569 stack.enter_context(CompileTimeInstructionCounter.record())
1570 stack.enter_context(torch_function_mode_stack_state_mgr)
-> 1571 result = _compile_inner(code, one_graph, hooks)
1572 assert torch._C._len_torch_function_stack() == 0, (
1573 "Torch function mode stack state changed while dynamo tracing, please report a bug"
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _compile_inner(code, one_graph, hooks)
1628 else contextlib.nullcontext()
1629 ):
-> 1630 dynamo_output = compile_frame(
1631 code,
1632 globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in compile_frame(code, globals, locals, builtins, closure, compiler_fn, one_graph, restart_reasons, export, export_constraints, frame_state, distributed_state, package)
1476 try:
1477 with dynamo_timed(f"compile_attempt_{attempt}", log_pt2_compile_event=True):
-> 1478 bytecode, tracer_output = transform_code_object(code, transform)
1479 assert tracer_output is not None
1480 return DynamoOutput(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/bytecode_transformation.py](https://localhost:8080/#) in transform_code_object(code, transformations, safe)
1624 propagate_line_nums(instructions)
1625
-> 1626 tracer_output = transformations(instructions, code_options)
1627 _, bytecode = clean_and_assemble_instructions(instructions, keys, code_options)
1628 return bytecode, tracer_output
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in transform(instructions, code_options)
1448 torch_function_mode_stack_state_mgr.stack
1449 )
-> 1450 tracer_output = trace_frame(
1451 code,
1452 globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _fn(*args, **kwargs)
341 reset_user_object_tracking()
342 try:
--> 343 return fn(*args, **kwargs)
344 finally:
345 cleanup.close()
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in trace_frame(code, globals, locals, builtins, closure, compiler_fn, tf_mode_stack, one_graph, speculation_log, instructions, code_options, export, export_constraints, frame_state, distributed_state, package)
909
910 try:
--> 911 run_tracer()
912 tracer_output = DynamoTracerOutput(tracer)
913 output = tracer_output.output_graph
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in run_tracer()
890 tracer.output.mark_bytecode_tracing_start()
891 with tracing(tracer.output.tracing_context), tracer.set_current_tx():
--> 892 tracer.run()
893 except exc.UnspecializeRestartAnalysis:
894 speculation_log.clear() # type: ignore[has-type]
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in run(self)
1811 self.start_point = self.instruction_pointer
1812 try:
-> 1813 while self.step():
1814 pass
1815 except Exception as e:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in step(self)
1478
1479 try:
-> 1480 self.dispatch_table[inst.opcode](self, inst)
1481 return not self.output.should_exit
1482 except TensorifyScalarRestartAnalysis:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in RETURN_VALUE(self, inst)
5141
5142 def RETURN_VALUE(self, inst: Instruction) -> None:
-> 5143 self._return(inst)
5144
5145 def RETURN_CONST(self, inst: Instruction) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in _return(self, inst)
5123 )
5124 log.debug("return triggered compile")
-> 5125 all_stack_locals_metadata = self.output.compile_subgraph(
5126 self,
5127 reason=GraphCompileReason(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in compile_subgraph(self, tx, reason, stack_pops)
2111 if count_calls(self.graph) != 0 or len(pass2.graph_outputs) != 0:
2112 output.extend(
-> 2113 self.compile_and_call_fx_graph(tx, pass2.graph_output_vars(), root)
2114 )
2115
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in compile_and_call_fx_graph(self, tx, rv, root)
2726
2727 with self.restore_global_state():
-> 2728 compiled_fn = self.call_user_compiler(gm, self.example_inputs())
2729
2730 from torch.fx._lazy_graph_module import _LazyGraphModule
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in call_user_compiler(self, gm, example_inputs)
2893 dynamo_compile_column_us="aot_autograd_cumulative_compile_time_us",
2894 ):
-> 2895 return self._call_user_compiler(gm, example_inputs)
2896
2897 def _call_user_compiler(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in _call_user_compiler(self, gm, example_inputs)
2951 if config.verify_correctness:
2952 compiler_fn = WrapperBackend(compiler_fn)
-> 2953 compiled_fn = compiler_fn(gm, example_inputs)
2954 _step_logger()(logging.INFO, f"done compiler function {name}")
2955 assert callable(compiled_fn), "compiler_fn did not return callable"
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_dynamo.py](https://localhost:8080/#) in __call__(self, gm, example_inputs, **kwargs)
154 raise
155 else:
--> 156 compiled_gm = compiler_fn(gm, example_inputs)
157
158 return compiled_gm # type: ignore[return-value]
[/usr/local/lib/python3.12/dist-packages/torch/__init__.py](https://localhost:8080/#) in __call__(self, model_, inputs_, config_patches)
2480
2481 all_patches = {**self.config, **(config_patches or {})}
-> 2482 return compile_fx(
2483 model_,
2484 inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx(model_, example_inputs_, inner_compile, config_patches, decompositions, ignore_shape_env, compile_region_name)
2732 )
2733
-> 2734 return _maybe_wrap_and_compile_fx_main(
2735 model_,
2736 example_inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _maybe_wrap_and_compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
2813
2814 # Finally do the actual work!
-> 2815 return _compile_fx_main(
2816 model_,
2817 example_inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
3026 # We will also shorten the traceback inside dynamo.
3027 # This is only useful if inductor is called directly with an FX graph.
-> 3028 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1
3029
3030
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
3011 ):
3012 try:
-> 3013 return dynamo_common.aot_autograd(
3014 fw_compiler=fw_compiler,
3015 bw_compiler=bw_compiler,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/backends/common.py](https://localhost:8080/#) in __call__(self, gm, example_inputs, **kwargs)
121 # NB: NOT cloned!
122 with enable_aot_logging(), patch_config:
--> 123 cg = aot_module_simplified(gm, example_inputs, **self.kwargs)
124 counters["aot_autograd"]["ok"] += 1
125 return disable(cg, reason="do not trace AOT-compiled graph")
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/aot_autograd.py](https://localhost:8080/#) in aot_module_simplified(mod, args, fw_compiler, bw_compiler, partition_fn, decompositions, keep_inference_input_mutations, inference_compiler, compiler_config_extra, ignore_shape_env, disable_functionalization, pre_grad_passes, compile_region_name)
1232 aot_state.fw_metadata.act_input_indices = act_input_indices
1233 aot_graph_capture = aot_stage1_graph_capture(aot_state, functional_call)
-> 1234 compiled_fn, _ = aot_stage2_compile(
1235 aot_state,
1236 aot_graph_capture,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in aot_stage2_compile(aot_state, aot_graph_capture, partition_fn, fw_compiler, bw_compiler, inference_compiler)
376
377 if aot_state.needs_autograd and not aot_state.aot_config.pre_dispatch:
--> 378 return aot_stage2_autograd(aot_state, aot_graph_capture)
379 else:
380 return aot_stage2_inference(aot_state, aot_graph_capture)
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in aot_stage2_autograd(aot_state, aot_graph_capture)
2284 )
2285
-> 2286 fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile(
2287 fw_module,
2288 adjusted_flat_args,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in _aot_stage2b_fw_compile(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, num_fw_outs_saved_for_bw, aot_config)
2073 # pyrefly: ignore [implicit-any]
2074 ) -> tuple[list[tuple[int, ...] | None] | None, Callable]:
-> 2075 return _aot_stage2b_compile_forward_or_inference(
2076 fw_module,
2077 adjusted_flat_args,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in _aot_stage2b_compile_forward_or_inference(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, aot_config, is_inference, num_fw_outs_saved_for_bw)
2601 with TracingContext.report_output_strides() as fwd_output_strides:
2602 # pyrefly: ignore[not-callable]
-> 2603 compiled_fw_func = compiler(fw_module, adjusted_flat_args)
2604
2605 # Make boxed if needed
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/schemas.py](https://localhost:8080/#) in __call__(self, gm, example_inputs)
1419 example_inputs: Sequence[InputType],
1420 ) -> OutputCode:
-> 1421 output_code = self.compiler_fn(gm, example_inputs)
1422 return output_code
1423
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in fw_compiler_base(gm, example_inputs, is_inference)
2874 else:
2875 num_orig_model_outputs = get_num_model_outputs(gm)
-> 2876 return compile_fx_forward(
2877 gm,
2878 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx_forward(gm, example_inputs, num_orig_model_outputs, num_example_inputs, compiler_config_extra, inner_compile, is_inference)
2502
2503 with cudagraph_annotation_context(compiler_config_extra.cudagraphs):
-> 2504 result = inner_compile(
2505 gm,
2506 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx_inner(gm, example_inputs, compile_region_name, **kwargs)
825 is_backward=kwargs["is_backward"],
826 )
--> 827 return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")(
828 gm,
829 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_aot.py](https://localhost:8080/#) in debug_wrapper(gm, example_inputs, compile_region_name, **kwargs)
312 # Call the compiler_fn - which is either aot_autograd or inductor
313 # with fake inputs
--> 314 inner_compiled_fn = compiler_fn(gm, example_inputs)
315 except Exception:
316 # TODO: Failures here are troublesome because no real inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs)
1067 raise
1068 except Exception as e:
-> 1069 raise InductorError(e, currentframe()).with_traceback(
1070 e.__traceback__
1071 ) from None
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs)
1047 TritonBundler.begin_compile()
1048 try:
-> 1049 mb_compiled_graph = fx_codegen_and_compile(
1050 gm,
1051 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in fx_codegen_and_compile(gm, example_inputs, inputs_to_check, compile_region_name, **graph_kwargs)
1834
1835 # pyrefly: ignore [unbound-name]
-> 1836 return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs)
1837
1838
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in codegen_and_compile(self, gm, example_inputs, inputs_to_check, graph_kwargs)
1595 )
1596 else:
-> 1597 compiled_module = graph.compile_to_module()
1598 compiled_fn = compiled_module.call
1599 compiled_fn_runner = getattr(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in compile_to_module(self)
2611 dynamo_compile_column_us="inductor_code_gen_cumulative_compile_time_us",
2612 ):
-> 2613 return self._compile_to_module()
2614
2615 def _compile_to_module(self) -> CompiledModule:
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in _compile_to_module(self)
2617 # returned separately in AOTInductor mode.
2618 wrapper_code, _ = (
-> 2619 self.codegen_with_cpp_wrapper() if self.cpp_wrapper else self.codegen()
2620 )
2621
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in codegen(self)
2553
2554 self.wrapper_code.push_codegened_graph(self)
-> 2555 self.scheduler.codegen()
2556
2557 log.debug(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in codegen(self)
7348 with dynamo_timed("Scheduler.codegen"):
7349 return (
-> 7350 self._codegen_partitions()
7351 if torch._inductor.config.graph_partition
7352 else self._codegen(self.nodes)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in _codegen_partitions(self)
7488
7489 if signature.skip_cudagraph:
-> 7490 self._codegen(partition)
7491 else:
7492 self._codegen_partition_wrapper(partition, signature)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in _codegen(self, nodes)
7639 elif isinstance(node, (FusedSchedulerNode, SchedulerNode)):
7640 # pyrefly: ignore [unbound-name]
-> 7641 self.get_backend(device).codegen_node(node)
7642 else:
7643 assert isinstance(node, NopKernelSchedulerNode)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/cuda_combined_scheduling.py](https://localhost:8080/#) in codegen_node(self, node)
150
151 def codegen_node(self, node: FusedSchedulerNode | SchedulerNode) -> None:
--> 152 return self._triton_scheduling.codegen_node(node)
153
154 def codegen_sync(self) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node(self, node)
1862 coalesce_analysis = None
1863
-> 1864 return self._codegen_nodes(nodes, coalesce_analysis) # type: ignore[arg-type]
1865
1866 @staticmethod
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in _codegen_nodes(self, nodes, coalesce_analysis)
1835 schedule_log.debug("Schedule:\n %s", node_schedule)
1836
-> 1837 return self.codegen_node_schedule(
1838 SIMDKernelFeatures(node_schedule, numel, rnumel, coalesce_analysis)
1839 )
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node_schedule(self, kernel_features)
1950 )
1951 for kernel in kernels:
-> 1952 self.codegen_node_schedule_with_kernel(node_schedule, kernel)
1953 MultiKernel.merge_workspaces_inplace(kernels)
1954
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node_schedule_with_kernel(self, node_schedule, kernel)
2043 else:
2044 node.decide_inplace_update()
-> 2045 index_vars = kernel.split_and_set_ranges(node.get_ranges())
2046 all_indexing.update(
2047 dict.fromkeys(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in split_and_set_ranges(self, lengths)
941 # Map the kernel's group structure to the node's sizes and set the ranges
942 # using the set_ranges method, returning the resulting iteration variables
--> 943 return self.map_kernel_groups_to_node_sizes(groups, lengths, self.set_ranges)
944
945 @classmethod
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in map_kernel_groups_to_node_sizes(cls, groups, lengths, set_ranges)
968 return set_ranges(*lengths)
969
--> 970 new_ranges, return_getters_groups = cls._split_iteration_ranges(groups, lengths)
971 itervars = [*itertools.chain.from_iterable(set_ranges(*new_ranges))]
972 return [[fn(itervars) for fn in fns] for fns in return_getters_groups]
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in _split_iteration_ranges(groups, lengths)
845 size, remaining[current_group]
846 ):
--> 847 raise CantSplit(size, remaining[current_group])
848
849 size1 = remaining[current_group]
InductorError: CantSplit: 128*s52*((s97//s52)) + 128*((s97//s52)) not divisible by s52*((s97//s52)) + ((s97//s52))
---
Collecting environment information...
PyTorch version: 2.12.0+cu130
Is debug build: False
CUDA used to build PyTorch: 13.0
ROCM used to build PyTorch: N/A
OS: Ubuntu 22.04.5 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
Clang version: Could not collect
CMake version: version 3.31.10
Libc version: glibc-2.35
Python version: 3.12.13 (main, Mar 4 2026, 09:23:07) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-6.6.122+-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.8.93
CUDA_MODULE_LOADING set to:
GPU models and configuration: GPU 0: Tesla T4
Nvidia driver version: 580.82.07
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.8.0
Is XPU available: False
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
Caching allocator config: N/A
CPU:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) CPU @ 2.00GHz
CPU family: 6
Model: 85
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
Stepping: 3
BogoMIPS: 4000.44
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat md_clear arch_capabilities
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32 KiB (1 instance)
L1i cache: 32 KiB (1 instance)
L2 cache: 1 MiB (1 instance)
L3 cache: 38.5 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Vulnerable
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Mitigation; PTE Inversion
Vulnerability Mds: Vulnerable; SMT Host state unknown
Vulnerability Meltdown: Vulnerable
Vulnerability Mmio stale data: Vulnerable
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Vulnerable
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
Vulnerability Spectre v2: Vulnerable; IBPB: disabled; STIBP: disabled; PBRSB-eIBRS: Not affected; BHI: Vulnerable
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Vulnerable
Vulnerability Vmscape: Not affected
Versions of relevant libraries:
[pip3] intel-cmplr-lib-ur==2025.3.3
[pip3] intel-openmp==2025.3.3
[pip3] mkl==2025.3.1
[pip3] numpy==2.0.2
[pip3] nvidia-cublas==13.1.1.3
[pip3] nvidia-cublas-cu12==12.8.4.1
[pip3] nvidia-cuda-cupti==13.0.85
[pip3] nvidia-cuda-cupti-cu12==12.8.90
[pip3] nvidia-cuda-nvrtc==13.0.88
[pip3] nvidia-cuda-nvrtc-cu12==12.8.93
[pip3] nvidia-cuda-runtime==13.0.96
[pip3] nvidia-cuda-runtime-cu12==12.8.90
[pip3] nvidia-cudnn-cu12==9.10.2.21
[pip3] nvidia-cudnn-cu13==9.20.0.48
[pip3] nvidia-cufft==12.0.0.61
[pip3] nvidia-cufft-cu12==11.3.3.83
[pip3] nvidia-curand==10.4.0.35
[pip3] nvidia-curand-cu12==10.3.9.90
[pip3] nvidia-cusolver==12.0.4.66
[pip3] nvidia-cusolver-cu12==11.7.3.90
[pip3] nvidia-cusparse==12.6.3.3
[pip3] nvidia-cusparse-cu12==12.5.8.93
[pip3] nvidia-cusparselt-cu12==0.7.1
[pip3] nvidia-cusparselt-cu13==0.8.1
[pip3] nvidia-nccl-cu12==2.27.5
[pip3] nvidia-nccl-cu13==2.29.7
[pip3] nvidia-nvjitlink==13.0.88
[pip3] nvidia-nvjitlink-cu12==12.8.93
[pip3] nvidia-nvtx==13.0.85
[pip3] nvidia-nvtx-cu12==12.8.90
[pip3] nvtx==0.2.15
[pip3] onemkl-license==2025.3.1
[pip3] optree==0.19.0
[pip3] tbb==2022.3.1
[pip3] tcmlib==1.4.1
[pip3] torch==2.12.0
[pip3] torchao==0.10.0
[pip3] torchaudio==2.11.0
[pip3] torchcodec==0.10.0+cu128
[pip3] torchdata==0.11.0
[pip3] torchsummary==1.5.1
[pip3] torchtune==0.6.1
[pip3] torchvision==0.27.0
[pip3] triton==3.7.0
[pip3] umf==1.0.3
[conda] Could not collectRAW_BUFFERClick to expand / collapse
🐛 Describe the bug
A small model with two chained x + Linear(RMSNorm(x)) residual blocks, where the residual buffer is built by scattering into a wider zero tensor, should compile and train fine under torch.compile(..., dynamic=True, fullgraph=True).
Expected: compiled forward + backward run the same as eager.
Actual: eager works. The compiled forward also works. Only the backward fails, with InductorError: CantSplit raised from _split_iteration_ranges. The failing divisibility check is of the form 128 · X · (N + 1) over X · (N + 1) — the quotient is the constant 128, but Inductor reports it as not divisible.
Minimal repro on a colab with t4 runtime
"""
Previous cell: !pip install --upgrade torch torchvision torchaudio
"""
import os
os.environ["TORCHDYNAMO_VERBOSE"] = "1"
import torch
print("Torch version:", torch.__version__) # Torch version: 2.12.0+cu130
class M(torch.nn.Module):
def __init__(self, d=128):
super().__init__()
self.n1 = torch.nn.RMSNorm(d)
self.l1 = torch.nn.Linear(d, d, bias=False)
self.n2 = torch.nn.RMSNorm(d)
self.l2 = torch.nn.Linear(d, d, bias=False)
def forward(self, a, b):
m = a.shape[0] // b.shape[0]
out = torch.zeros(m * (b.shape[0] + 1), a.shape[-1], device=a.device)
out[: a.shape[0]] = a
out = out + self.l1(self.n1(out))
out = out + self.l2(self.n2(out))
return out.sum()
dev = "cuda"
a, b = torch.randn(21, 128, device=dev), torch.randn(7, device=dev)
print("Testing eager mode...")
M().to(dev)(a, b).backward()
print("Eager mode OK")
print("Testing compiled mode...")
torch.compile(M().to(dev), fullgraph=True, dynamic=True)(a, b).backward() # Crashes
print("Compiled mode OK")Trigger conditions (empirically minimized)
Tried each of the following in isolation that made the bug disappears:
- Scatter (
index_put) into a wider buffer using shape-derived indices (out[: a.shape[0]] = a). Replacing withtorch.catmakes the bug vanish. torch.compile(..., dynamic=True)with two free shape symbols (T*NandN), soT = TN // Nbecomes aFloorDivin the symbolic env.- At least two
x + Linear(RMSNorm(x))residual blocks chained. One block, zeroLinears, or zeroRMSNorms compiles fine.
Error logs
Torch version: 2.12.0+cu130
Testing eager mode...
Eager mode OK
Testing compiled mode...
W0514 09:49:45.276000 2955 torch/_inductor/utils.py:1717] [0/0] Not enough SMs to use max_autotune_gemm mode
---------------------------------------------------------------------------
InductorError Traceback (most recent call last)
[/tmp/ipykernel_2955/4129170816.py](https://localhost:8080/#) in <cell line: 0>()
28 print("Eager mode OK")
29 print("Testing compiled mode...")
---> 30 torch.compile(M().to(dev), fullgraph=True, dynamic=True)(a, b).backward()
31 print("Compiled mode OK")
61 frames
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in __call__(self, *args, **kwargs)
471 )
472 with _set_in_optimized_module():
--> 473 return super().__call__(*args, **kwargs)
474
475 def _aot_compile(self, inputs: list[torch._dynamo.aot_compile.ModelInput]) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _wrapped_call_impl(self, *args, **kwargs)
1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1777 else:
-> 1778 return self._call_impl(*args, **kwargs)
1779
1780 # torchrec tests the code consistency with the following code
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _call_impl(self, *args, **kwargs)
1787 or _global_backward_pre_hooks or _global_backward_hooks
1788 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1789 return forward_call(*args, **kwargs)
1790
1791 result = None
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in compile_wrapper(*args, **kwargs)
1060 # Failures in the backend likely don't have useful
1061 # data in the TorchDynamo frames, so we strip them out.
-> 1062 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1
1063 finally:
1064 # Restore the dynamic layer stack depth if necessary.
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py](https://localhost:8080/#) in compile_wrapper(*args, **kwargs)
1045 call_succeeded = False
1046 try:
-> 1047 result = fn(*args, **kwargs)
1048 call_succeeded = True
1049 except (Unsupported, UncapturedHigherOrderOpError, UserError) as e:
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _wrapped_call_impl(self, *args, **kwargs)
1776 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc]
1777 else:
-> 1778 return self._call_impl(*args, **kwargs)
1779
1780 # torchrec tests the code consistency with the following code
[/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py](https://localhost:8080/#) in _call_impl(self, *args, **kwargs)
1787 or _global_backward_pre_hooks or _global_backward_hooks
1788 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1789 return forward_call(*args, **kwargs)
1790
1791 result = None
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in __call__(self, frame, cache_entry, frame_state)
2472 with compile_lock, _disable_current_modes():
2473 # skip=1: skip this frame
-> 2474 result = self._torchdynamo_orig_backend(
2475 frame, cache_entry, self.hooks, frame_state, skip=1
2476 )
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in __call__(self, frame, cache_entry, hooks, frame_state, skip)
734 )
735 with compile_ctx, recompile_ctx:
--> 736 result = _compile(
737 frame.f_code,
738 frame.f_globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _compile(code, globals, locals, builtins, closure, compiler_fn, one_graph, export, export_constraints, hooks, cache_entry, cache_size, frame, frame_state, compile_id, skip, package, convert_frame_box)
1959
1960 try:
-> 1961 guarded_code, tracer_output = compile_inner(code, one_graph, hooks)
1962
1963 # NB: We only put_code_state in success case. Success case here
[/usr/local/lib/python3.12/dist-packages/torch/_utils_internal.py](https://localhost:8080/#) in wrapper_function(*args, **kwargs)
94 # in stack traces when profiling is not enabled.
95 if not StrobelightCompileTimeProfiler.enabled:
---> 96 return function(*args, **kwargs)
97
98 return StrobelightCompileTimeProfiler.profile_compile_time(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in compile_inner(code, one_graph, hooks)
1569 stack.enter_context(CompileTimeInstructionCounter.record())
1570 stack.enter_context(torch_function_mode_stack_state_mgr)
-> 1571 result = _compile_inner(code, one_graph, hooks)
1572 assert torch._C._len_torch_function_stack() == 0, (
1573 "Torch function mode stack state changed while dynamo tracing, please report a bug"
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _compile_inner(code, one_graph, hooks)
1628 else contextlib.nullcontext()
1629 ):
-> 1630 dynamo_output = compile_frame(
1631 code,
1632 globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in compile_frame(code, globals, locals, builtins, closure, compiler_fn, one_graph, restart_reasons, export, export_constraints, frame_state, distributed_state, package)
1476 try:
1477 with dynamo_timed(f"compile_attempt_{attempt}", log_pt2_compile_event=True):
-> 1478 bytecode, tracer_output = transform_code_object(code, transform)
1479 assert tracer_output is not None
1480 return DynamoOutput(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/bytecode_transformation.py](https://localhost:8080/#) in transform_code_object(code, transformations, safe)
1624 propagate_line_nums(instructions)
1625
-> 1626 tracer_output = transformations(instructions, code_options)
1627 _, bytecode = clean_and_assemble_instructions(instructions, keys, code_options)
1628 return bytecode, tracer_output
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in transform(instructions, code_options)
1448 torch_function_mode_stack_state_mgr.stack
1449 )
-> 1450 tracer_output = trace_frame(
1451 code,
1452 globals,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in _fn(*args, **kwargs)
341 reset_user_object_tracking()
342 try:
--> 343 return fn(*args, **kwargs)
344 finally:
345 cleanup.close()
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in trace_frame(code, globals, locals, builtins, closure, compiler_fn, tf_mode_stack, one_graph, speculation_log, instructions, code_options, export, export_constraints, frame_state, distributed_state, package)
909
910 try:
--> 911 run_tracer()
912 tracer_output = DynamoTracerOutput(tracer)
913 output = tracer_output.output_graph
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/convert_frame.py](https://localhost:8080/#) in run_tracer()
890 tracer.output.mark_bytecode_tracing_start()
891 with tracing(tracer.output.tracing_context), tracer.set_current_tx():
--> 892 tracer.run()
893 except exc.UnspecializeRestartAnalysis:
894 speculation_log.clear() # type: ignore[has-type]
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in run(self)
1811 self.start_point = self.instruction_pointer
1812 try:
-> 1813 while self.step():
1814 pass
1815 except Exception as e:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in step(self)
1478
1479 try:
-> 1480 self.dispatch_table[inst.opcode](self, inst)
1481 return not self.output.should_exit
1482 except TensorifyScalarRestartAnalysis:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in RETURN_VALUE(self, inst)
5141
5142 def RETURN_VALUE(self, inst: Instruction) -> None:
-> 5143 self._return(inst)
5144
5145 def RETURN_CONST(self, inst: Instruction) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/symbolic_convert.py](https://localhost:8080/#) in _return(self, inst)
5123 )
5124 log.debug("return triggered compile")
-> 5125 all_stack_locals_metadata = self.output.compile_subgraph(
5126 self,
5127 reason=GraphCompileReason(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in compile_subgraph(self, tx, reason, stack_pops)
2111 if count_calls(self.graph) != 0 or len(pass2.graph_outputs) != 0:
2112 output.extend(
-> 2113 self.compile_and_call_fx_graph(tx, pass2.graph_output_vars(), root)
2114 )
2115
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in compile_and_call_fx_graph(self, tx, rv, root)
2726
2727 with self.restore_global_state():
-> 2728 compiled_fn = self.call_user_compiler(gm, self.example_inputs())
2729
2730 from torch.fx._lazy_graph_module import _LazyGraphModule
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in call_user_compiler(self, gm, example_inputs)
2893 dynamo_compile_column_us="aot_autograd_cumulative_compile_time_us",
2894 ):
-> 2895 return self._call_user_compiler(gm, example_inputs)
2896
2897 def _call_user_compiler(
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/output_graph.py](https://localhost:8080/#) in _call_user_compiler(self, gm, example_inputs)
2951 if config.verify_correctness:
2952 compiler_fn = WrapperBackend(compiler_fn)
-> 2953 compiled_fn = compiler_fn(gm, example_inputs)
2954 _step_logger()(logging.INFO, f"done compiler function {name}")
2955 assert callable(compiled_fn), "compiler_fn did not return callable"
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_dynamo.py](https://localhost:8080/#) in __call__(self, gm, example_inputs, **kwargs)
154 raise
155 else:
--> 156 compiled_gm = compiler_fn(gm, example_inputs)
157
158 return compiled_gm # type: ignore[return-value]
[/usr/local/lib/python3.12/dist-packages/torch/__init__.py](https://localhost:8080/#) in __call__(self, model_, inputs_, config_patches)
2480
2481 all_patches = {**self.config, **(config_patches or {})}
-> 2482 return compile_fx(
2483 model_,
2484 inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx(model_, example_inputs_, inner_compile, config_patches, decompositions, ignore_shape_env, compile_region_name)
2732 )
2733
-> 2734 return _maybe_wrap_and_compile_fx_main(
2735 model_,
2736 example_inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _maybe_wrap_and_compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
2813
2814 # Finally do the actual work!
-> 2815 return _compile_fx_main(
2816 model_,
2817 example_inputs_,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
3026 # We will also shorten the traceback inside dynamo.
3027 # This is only useful if inductor is called directly with an FX graph.
-> 3028 raise e.remove_dynamo_frames() from None # see TORCHDYNAMO_VERBOSE=1
3029
3030
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_main(model_, example_inputs_, inner_compile, ignore_shape_env, get_decomp_fn, compile_region_name)
3011 ):
3012 try:
-> 3013 return dynamo_common.aot_autograd(
3014 fw_compiler=fw_compiler,
3015 bw_compiler=bw_compiler,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/backends/common.py](https://localhost:8080/#) in __call__(self, gm, example_inputs, **kwargs)
121 # NB: NOT cloned!
122 with enable_aot_logging(), patch_config:
--> 123 cg = aot_module_simplified(gm, example_inputs, **self.kwargs)
124 counters["aot_autograd"]["ok"] += 1
125 return disable(cg, reason="do not trace AOT-compiled graph")
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/aot_autograd.py](https://localhost:8080/#) in aot_module_simplified(mod, args, fw_compiler, bw_compiler, partition_fn, decompositions, keep_inference_input_mutations, inference_compiler, compiler_config_extra, ignore_shape_env, disable_functionalization, pre_grad_passes, compile_region_name)
1232 aot_state.fw_metadata.act_input_indices = act_input_indices
1233 aot_graph_capture = aot_stage1_graph_capture(aot_state, functional_call)
-> 1234 compiled_fn, _ = aot_stage2_compile(
1235 aot_state,
1236 aot_graph_capture,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in aot_stage2_compile(aot_state, aot_graph_capture, partition_fn, fw_compiler, bw_compiler, inference_compiler)
376
377 if aot_state.needs_autograd and not aot_state.aot_config.pre_dispatch:
--> 378 return aot_stage2_autograd(aot_state, aot_graph_capture)
379 else:
380 return aot_stage2_inference(aot_state, aot_graph_capture)
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in aot_stage2_autograd(aot_state, aot_graph_capture)
2284 )
2285
-> 2286 fwd_output_strides, compiled_fw_func = _aot_stage2b_fw_compile(
2287 fw_module,
2288 adjusted_flat_args,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in _aot_stage2b_fw_compile(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, num_fw_outs_saved_for_bw, aot_config)
2073 # pyrefly: ignore [implicit-any]
2074 ) -> tuple[list[tuple[int, ...] | None] | None, Callable]:
-> 2075 return _aot_stage2b_compile_forward_or_inference(
2076 fw_module,
2077 adjusted_flat_args,
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/graph_compile.py](https://localhost:8080/#) in _aot_stage2b_compile_forward_or_inference(fw_module, adjusted_flat_args, maybe_subclass_meta, fw_metadata, aot_config, is_inference, num_fw_outs_saved_for_bw)
2601 with TracingContext.report_output_strides() as fwd_output_strides:
2602 # pyrefly: ignore[not-callable]
-> 2603 compiled_fw_func = compiler(fw_module, adjusted_flat_args)
2604
2605 # Make boxed if needed
[/usr/local/lib/python3.12/dist-packages/torch/_functorch/_aot_autograd/schemas.py](https://localhost:8080/#) in __call__(self, gm, example_inputs)
1419 example_inputs: Sequence[InputType],
1420 ) -> OutputCode:
-> 1421 output_code = self.compiler_fn(gm, example_inputs)
1422 return output_code
1423
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in fw_compiler_base(gm, example_inputs, is_inference)
2874 else:
2875 num_orig_model_outputs = get_num_model_outputs(gm)
-> 2876 return compile_fx_forward(
2877 gm,
2878 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx_forward(gm, example_inputs, num_orig_model_outputs, num_example_inputs, compiler_config_extra, inner_compile, is_inference)
2502
2503 with cudagraph_annotation_context(compiler_config_extra.cudagraphs):
-> 2504 result = inner_compile(
2505 gm,
2506 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in compile_fx_inner(gm, example_inputs, compile_region_name, **kwargs)
825 is_backward=kwargs["is_backward"],
826 )
--> 827 return wrap_compiler_debug(_compile_fx_inner, compiler_name="inductor")(
828 gm,
829 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_dynamo/repro/after_aot.py](https://localhost:8080/#) in debug_wrapper(gm, example_inputs, compile_region_name, **kwargs)
312 # Call the compiler_fn - which is either aot_autograd or inductor
313 # with fake inputs
--> 314 inner_compiled_fn = compiler_fn(gm, example_inputs)
315 except Exception:
316 # TODO: Failures here are troublesome because no real inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs)
1067 raise
1068 except Exception as e:
-> 1069 raise InductorError(e, currentframe()).with_traceback(
1070 e.__traceback__
1071 ) from None
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in _compile_fx_inner(gm, example_inputs, compile_region_name, **graph_kwargs)
1047 TritonBundler.begin_compile()
1048 try:
-> 1049 mb_compiled_graph = fx_codegen_and_compile(
1050 gm,
1051 example_inputs,
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in fx_codegen_and_compile(gm, example_inputs, inputs_to_check, compile_region_name, **graph_kwargs)
1834
1835 # pyrefly: ignore [unbound-name]
-> 1836 return scheme.codegen_and_compile(gm, example_inputs, inputs_to_check, graph_kwargs)
1837
1838
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/compile_fx.py](https://localhost:8080/#) in codegen_and_compile(self, gm, example_inputs, inputs_to_check, graph_kwargs)
1595 )
1596 else:
-> 1597 compiled_module = graph.compile_to_module()
1598 compiled_fn = compiled_module.call
1599 compiled_fn_runner = getattr(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in compile_to_module(self)
2611 dynamo_compile_column_us="inductor_code_gen_cumulative_compile_time_us",
2612 ):
-> 2613 return self._compile_to_module()
2614
2615 def _compile_to_module(self) -> CompiledModule:
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in _compile_to_module(self)
2617 # returned separately in AOTInductor mode.
2618 wrapper_code, _ = (
-> 2619 self.codegen_with_cpp_wrapper() if self.cpp_wrapper else self.codegen()
2620 )
2621
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/graph.py](https://localhost:8080/#) in codegen(self)
2553
2554 self.wrapper_code.push_codegened_graph(self)
-> 2555 self.scheduler.codegen()
2556
2557 log.debug(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in codegen(self)
7348 with dynamo_timed("Scheduler.codegen"):
7349 return (
-> 7350 self._codegen_partitions()
7351 if torch._inductor.config.graph_partition
7352 else self._codegen(self.nodes)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in _codegen_partitions(self)
7488
7489 if signature.skip_cudagraph:
-> 7490 self._codegen(partition)
7491 else:
7492 self._codegen_partition_wrapper(partition, signature)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/scheduler.py](https://localhost:8080/#) in _codegen(self, nodes)
7639 elif isinstance(node, (FusedSchedulerNode, SchedulerNode)):
7640 # pyrefly: ignore [unbound-name]
-> 7641 self.get_backend(device).codegen_node(node)
7642 else:
7643 assert isinstance(node, NopKernelSchedulerNode)
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/cuda_combined_scheduling.py](https://localhost:8080/#) in codegen_node(self, node)
150
151 def codegen_node(self, node: FusedSchedulerNode | SchedulerNode) -> None:
--> 152 return self._triton_scheduling.codegen_node(node)
153
154 def codegen_sync(self) -> None:
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node(self, node)
1862 coalesce_analysis = None
1863
-> 1864 return self._codegen_nodes(nodes, coalesce_analysis) # type: ignore[arg-type]
1865
1866 @staticmethod
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in _codegen_nodes(self, nodes, coalesce_analysis)
1835 schedule_log.debug("Schedule:\n %s", node_schedule)
1836
-> 1837 return self.codegen_node_schedule(
1838 SIMDKernelFeatures(node_schedule, numel, rnumel, coalesce_analysis)
1839 )
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node_schedule(self, kernel_features)
1950 )
1951 for kernel in kernels:
-> 1952 self.codegen_node_schedule_with_kernel(node_schedule, kernel)
1953 MultiKernel.merge_workspaces_inplace(kernels)
1954
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in codegen_node_schedule_with_kernel(self, node_schedule, kernel)
2043 else:
2044 node.decide_inplace_update()
-> 2045 index_vars = kernel.split_and_set_ranges(node.get_ranges())
2046 all_indexing.update(
2047 dict.fromkeys(
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in split_and_set_ranges(self, lengths)
941 # Map the kernel's group structure to the node's sizes and set the ranges
942 # using the set_ranges method, returning the resulting iteration variables
--> 943 return self.map_kernel_groups_to_node_sizes(groups, lengths, self.set_ranges)
944
945 @classmethod
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in map_kernel_groups_to_node_sizes(cls, groups, lengths, set_ranges)
968 return set_ranges(*lengths)
969
--> 970 new_ranges, return_getters_groups = cls._split_iteration_ranges(groups, lengths)
971 itervars = [*itertools.chain.from_iterable(set_ranges(*new_ranges))]
972 return [[fn(itervars) for fn in fns] for fns in return_getters_groups]
[/usr/local/lib/python3.12/dist-packages/torch/_inductor/codegen/simd.py](https://localhost:8080/#) in _split_iteration_ranges(groups, lengths)
845 size, remaining[current_group]
846 ):
--> 847 raise CantSplit(size, remaining[current_group])
848
849 size1 = remaining[current_group]
InductorError: CantSplit: 128*s52*((s97//s52)) + 128*((s97//s52)) not divisible by s52*((s97//s52)) + ((s97//s52))Versions
Collecting environment information...
PyTorch version: 2.12.0+cu130
Is debug build: False
CUDA used to build PyTorch: 13.0
ROCM used to build PyTorch: N/A
OS: Ubuntu 22.04.5 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
Clang version: Could not collect
CMake version: version 3.31.10
Libc version: glibc-2.35
Python version: 3.12.13 (main, Mar 4 2026, 09:23:07) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-6.6.122+-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.8.93
CUDA_MODULE_LOADING set to:
GPU models and configuration: GPU 0: Tesla T4
Nvidia driver version: 580.82.07
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.8.0
Is XPU available: False
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
Caching allocator config: N/A
CPU:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) CPU @ 2.00GHz
CPU family: 6
Model: 85
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
Stepping: 3
BogoMIPS: 4000.44
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat md_clear arch_capabilities
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32 KiB (1 instance)
L1i cache: 32 KiB (1 instance)
L2 cache: 1 MiB (1 instance)
L3 cache: 38.5 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Vulnerable
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Mitigation; PTE Inversion
Vulnerability Mds: Vulnerable; SMT Host state unknown
Vulnerability Meltdown: Vulnerable
Vulnerability Mmio stale data: Vulnerable
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Vulnerable
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
Vulnerability Spectre v2: Vulnerable; IBPB: disabled; STIBP: disabled; PBRSB-eIBRS: Not affected; BHI: Vulnerable
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Vulnerable
Vulnerability Vmscape: Not affected
Versions of relevant libraries:
[pip3] intel-cmplr-lib-ur==2025.3.3
[pip3] intel-openmp==2025.3.3
[pip3] mkl==2025.3.1
[pip3] numpy==2.0.2
[pip3] nvidia-cublas==13.1.1.3
[pip3] nvidia-cublas-cu12==12.8.4.1
[pip3] nvidia-cuda-cupti==13.0.85
[pip3] nvidia-cuda-cupti-cu12==12.8.90
[pip3] nvidia-cuda-nvrtc==13.0.88
[pip3] nvidia-cuda-nvrtc-cu12==12.8.93
[pip3] nvidia-cuda-runtime==13.0.96
[pip3] nvidia-cuda-runtime-cu12==12.8.90
[pip3] nvidia-cudnn-cu12==9.10.2.21
[pip3] nvidia-cudnn-cu13==9.20.0.48
[pip3] nvidia-cufft==12.0.0.61
[pip3] nvidia-cufft-cu12==11.3.3.83
[pip3] nvidia-curand==10.4.0.35
[pip3] nvidia-curand-cu12==10.3.9.90
[pip3] nvidia-cusolver==12.0.4.66
[pip3] nvidia-cusolver-cu12==11.7.3.90
[pip3] nvidia-cusparse==12.6.3.3
[pip3] nvidia-cusparse-cu12==12.5.8.93
[pip3] nvidia-cusparselt-cu12==0.7.1
[pip3] nvidia-cusparselt-cu13==0.8.1
[pip3] nvidia-nccl-cu12==2.27.5
[pip3] nvidia-nccl-cu13==2.29.7
[pip3] nvidia-nvjitlink==13.0.88
[pip3] nvidia-nvjitlink-cu12==12.8.93
[pip3] nvidia-nvtx==13.0.85
[pip3] nvidia-nvtx-cu12==12.8.90
[pip3] nvtx==0.2.15
[pip3] onemkl-license==2025.3.1
[pip3] optree==0.19.0
[pip3] tbb==2022.3.1
[pip3] tcmlib==1.4.1
[pip3] torch==2.12.0
[pip3] torchao==0.10.0
[pip3] torchaudio==2.11.0
[pip3] torchcodec==0.10.0+cu128
[pip3] torchdata==0.11.0
[pip3] torchsummary==1.5.1
[pip3] torchtune==0.6.1
[pip3] torchvision==0.27.0
[pip3] triton==3.7.0
[pip3] umf==1.0.3
[conda] Could not collectcc @chauhang @penguinwu @ezyang @bobrenjc93 @aditvenk @laithsakka @voznesenskym @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @aakhundov @coconutruben @jataylo
Vote matrix · Quick signals
Still need to ship something?
×6Another batch ranked right after the header list — different links, same matching logic.
TRENDING
- Feature Request: Configurable per-minute rate limiting (RPM) for models to prevent 429 errors
- Android: Hermes App + Termux install share ~/.hermes and cause silent permission loops
- hermes update emits unicode-animations ANSI demo in non-interactive logs
- hermes update downgrades aiohttp from 3.13.4 to 3.13.3
- npm install warns about deprecated @babel/plugin-proposal-private-methods
- DingTalk inbound media URLs are skipped as unreadable native image paths
- fix(dashboard): ChatPage clears header action buttons on ALL pages, not just Sessions
- [Bug]: check_web_api_key() hardcodes built-in backends — third-party web search plugins silently disabled
- Hermes Web UI 修复经验:GatewayManager 补丁、进程 D 状态、数据库升级问题
- Telegram gateway can silently drop turn after /stop with response=0 chars while internal work continues
- Bug Report: v0.14.0 上下文污染 — 历史回复碎片回注到新请求
- Bug: hermes skills search table truncates Identifier column — install fails with copied value
- [skills-index-watchdog] Skills index is stale or degraded (degraded)
- Discord approval embed not rendering on web/mobile — embed data present in API but invisible
- Idea: Discord voice-channel participation / opt-in auto-join mode
- [Feature]: Claude Code--ultrawork
- build-arm64 job deterministically fails on cold cache (Azure SAS token expires mid-build)
- [Enhancement] computer_use: action=type should fall back to key events for terminal emulators (Ghostty/Terminal.app/iTerm2)
- Feature Request: Session Recovery on Temporary Provider Outage
- [Bug]: Hermes dashboard not working on NixOS (container)
- [Feature]: Add option to ignore @all/@everyone mentions in Feishu group chats
- QQ Bot WebSocket 频繁断开:长时间工具执行阻塞 asyncio 事件循环导致心跳超时
- patch tool: new_string escape sequences (\t) get written literally
- Feature Request: i18n / 多语言支持(国际化)
- Bug: web_crawl schema lets models auto-guess "instructions" instead of asking the user via clarify
- feat: `!command` prefix for direct shell execution (like Claude Code)
- Expose currently-running cron jobs via /api/jobs (or new endpoint)
- [Bug]: Kanban parent-child handoff: scratch workspace GC destroys artifacts before child can read them
- [Bug, Windows] hermes gateway restart loses session context — planned_stop_marker not written before SIGTERM
- [Bug]: Codex→DeepSeek fallback sends assistant turns without reasoning_content → HTTP 400 (require-side cross-provider failover)
- [Bug]: Update got stuck half way, reboot it, then ModuleNotFoundError: No module named 'hermes_cli'
- Kanban dispatcher corrupt-board handling and multi-profile gateway ownership ambiguity
- Gateway can resend a short fallback message when the real final Telegram response was already delivered
- [BUG] Bedrock: Fix 'Invalid API Key format' for presigned URL tokens
- Secret redaction corrupts code syntax in tool output (write_file, execute_code, terminal)
- Unable to connect Ollama Cloud with Pro Subscription to Hermes
- feat: fuzzy substring matching for /skill autocomplete
- PRD: Autonomous market-impact prediction briefing system
- Kanban dashboard should support task/card deep links
- [Feature] Native Feishu CardKit Streaming: consolidate best-in-class implementations
- [Feature]: Inject mental model into context when using Hindsight
- Interactive CLI hides tool output despite display.tool_progress=all, and hermes chat -v does not restore it
- fix(api_server): _handle_responses drops text.format JSON schema — structured output constraints silently ignored
- state.db FTS corruption goes undetected — no integrity check, no repair path
- bug: fallback routing can select text-only models for image requests and hide the primary failure
- feat(kanban): persist worker session_id per run and pass --resume on respawn after unblock
- feat(kanban): support GitHub/OMO lifecycle bridge for Xiyou-style automation
- Expose update-safe TUI/composer hooks for voice transcript and composer events
- Hide or configure voice transcript status rows in editable dictation mode
- [Feature]: Per-Tool / Per-Toolset Approval Policies
- Context compression creates orphan sessions missing from state.db
- messaging platform
- feat: Add read-only / silent monitoring mode for WhatsApp adapter
- double-.hermes path mismatch, the HOME env var leak, and the fallback-notification UX problem
- Bug: Plattform-Bundle name `hermes-yuanbao` in `agent.disabled_toolsets` silently kills ALL tools in gateway path (Telegram + cron), CLI unaffected
- CLI /yolo (in-chat) does not bypass dangerous command approvals — env var freeze + missing enable_session_yolo call
- OpenAI Codex provider crashes with "'NoneType' object is not iterable" (HTTP None)
- DEEPSEEK_API_KEY blocked by env blocklist in gateway process — cron jobs fail with deepseek provider
- fix(feishu): Card action callback routing issues - invalid message_id and unrecognized /card command
- Discord plugin: profiles without explicit `discord:` block silently get `require_mention=true` + `auto_thread=true` (regression in cc8e5ec2a)
- [Bug]: DISCORD_ALLOWED_ROLES ignored by gateway _is_user_authorized — role-authorized users get 'Unauthorized user' rejection
- [Bug]: /new, /clear, and /reset commands freeze the terminal session
- openai-codex subscription backend returns HTTP 200 with response.output=None, causing Slack/cron failures
- RFC: Centralized Model/Provider Registry
- bug: openai-codex provider — TypeError: 'NoneType' object is not iterable on every request (gpt-5.5)
- [Feature]: Source-aware instruction gate — architectural mitigation for indirect prompt injection
- Named custom provider stale_timeout_seconds ignored because runtime provider is normalized to `custom`
- guard test (ignore)
- [Feature]: per-platform LLM request_overrides (extra_body / reasoning_effort / service_tier)
- One-shot smoke: add Flue-backed orchestration fixture
- Gateway should not treat stale Codex app-server progress as final response after post-tool silence
- `docker_run_as_host_user: true` breaks bundled skills: Hermes home is mounted into `/root/.hermes` but the container runs as a non-root user (`HOME=/home/pn`)
- [Bug]: gateway api_server streaming bypasses server-side tool-call loop when chat_template_kwargs.enable_thinking=false (model emits tool name as plain text)
- [Feature]: Pre-install python-telegram-bot in Umbrel Hermes Docker image
- YouTube Shorts filter not working in youtube-content skill
- v0.15.0 PyPI release breaks ALL platforms — plugin.yaml manifests missing from package
- RFC: On-demand tool/skill/MCP discovery — decouple schema registration from process lifecycle
- Pixshelf: local-first stock photo workflow command center
- [Bug]: baoyu infographic skill should not silently bypass image_generate
- Pixshelf v1.5: manual submission tracking for stock agencies
- `hermes config set` silently accepts unknown keys, writing them where the runtime never reads
- Honcho memory prefetch hang on fresh CLI subprocess in v0.15.0 (regression from #27190)
- [Bug] v0.15.0 Docker image: stage2-hook.sh, main-wrapper.sh missing; container_boot module removed
- Feature: Reduce cache-read token overhead for DeepSeek providers — configurable cache_ttl, skills snapshot trimming, memory compaction
- Windows: three bugs from daily use (plugin discovery, gateway exit code, Unicode decode
- holographic memory: HRR silently degrades to FTS5 when numpy is missing
- Make max_tokens configurable for aux vision calls
- Conversation compression desynchronizes session ID between agent context and gateway routing, causing silent message loss
- [Bug]: v0.15.0 Docker image:The TUI cannot be used in the dashboard.
- cron: skip_memory=True blocks fact_store/memory tools from all cron jobs
- TUI: Node.js OOM crash when agent uses browser tools repeatedly
- feat: model_profiles — per-model toolset and memory config
- Automatic background skill patching disrupts active sessions (severe impact on local models)
- ensure_hermes_home() creates root-owned dirs in profile subdirectories when kanban workers are dispatched
- Feature: opt-in webhook bypass for DISCORD_ALLOW_BOTS — allow operator-initiated probes without weakening bot-loop guard
- v0.15.0: Codex requests fail HTTP 400 when participant display_name contains non-ASCII (emoji breaks input[].name pattern)
- Architecture: State Persistence Precedence (Memory vs Skills vs Hooks)
- [Bug]: cronjob tool: create action always fails with "schedule is required for create" even when parameters are provided
- codex-oauth: 'NoneType' object is not iterable in _run_codex_stream (gpt-5.5) — every turn fails non-retryably
- Docs/Config: Plugin local scope enablement ambiguity
- [Bug]: CLI freezes after using /new command (WSL)
- Profile Codex auth can ignore global credential pool when local state is stale
- [workflow-engine] CRITICAL: variable substitution crashes on regex metachars in user input
- [workflow-engine] HIGH: loop and bash nodes leak subprocesses on timeout
- [workflow-engine] HIGH: README documents config env vars the engine never reads
- [workflow-engine] MEDIUM: workflow_run rate limit bypassable via concurrent calls (TOCTOU)
- [workflow-engine] chore: manifest gaps, side-effectful register(), dead code, unauth kanban dispatch
- [mcp_lazy] HIGH: synthetic mcp_server_<name> stub collides with a real MCP server named 'server'
- [mcp_lazy] HIGH: promote_server eager flag documented but never persisted
- [mcp_lazy] MEDIUM: _prev_mode dict leaks and goes stale; not cleared on session evict
- [mcp_lazy] MEDIUM: get_pool has unlocked check-then-set race on pool creation
- [mcp_lazy] MEDIUM: pre_tool_call gives no guidance for unpromoted server-stub calls
- [mcp_lazy] chore: undeclared pre_tool_call hook, nonexistent 'mcp_load_tools' name in docs, missing tests
- [a2a_fleet] CRITICAL: server never auto-starts — register() runs outside an event loop
- [a2a_fleet] CRITICAL: auth_required defaults to false on a cross-machine surface
- [a2a_fleet] HIGH: remove invented disable() hook — loader never calls it, port leaks on reload
- [a2a_fleet] HIGH: plugin.yaml missing kind / provides_tools / requires_env (token env undeclared)
- [a2a_fleet] MEDIUM: tighten wide-open CORS, anonymous /health peer leak, and peer-URL SSRF
- [a2a_fleet] MEDIUM: relocate tests to tests/plugins/ and cover sync-register + auth-default paths
- xai-oauth auxiliary client incorrectly uses Responses API (CodexAuxiliaryClient), causing 403 on compression/vision/web_extract
- [Bug]: Direct Copilot gpt-5.5 large resumes are killed by 12s Codex TTFB watchdog
- [Bug]: `hermes uninstall` does not work on Windows
- TUI: Thinking block leaks raw JSON and Σ character
- Hostinger VPS: migration Hermes Agent → Hermes WebUI impossible (tini + UID mismatch + sessions)
- /goal judge over-continues exploratory goals unless the assistant explicitly says the goal is complete
- /goal auto-continuation can be amplified by preflight compression/session split and resurrect stale task state
- Dashboard infinite reload loop in loopback mode — GET /api/auth/me returns 401 on every page load
- [Bug]: Provider/LLM switch leaves stale encrypted_content causing 400 errors on Telegram sessions
- [Bug]: Infinite reload loop / React state loop on Sessions tab (Firefox + Chrome) — repeated 401 on /api/auth/me (v0.15.0)
- show_reasoning should work independently of streaming in CLI mode
- Feature Request: Strip reasoning/<think> blocks from TTS preprocessing
- mcp add / mcp test raise NameError when mcp package not installed
- v0.14.0 dashboard breaks behind reverse proxies — two regressions
- Skills hub creates empty category directories when no skills installed
- [Bug]: Custom endpoint: ChatCompletions returns content, but Hermes treats response as empty (v0.14.0)
- fix: atomic_replace() fails with EXDEV when HERMES_HOME is a cross-filesystem symlink
- fix(gateway): Feishu session cancellation orphans session guard, permanently blocking messages
- Custom endpoint pricing can overestimate Crof qwen3.5-9b cost by 1,000,000x
- MCP OAuth callback: module-level port global causes port collisions and structural weaknesses vs upstream
- Bug: send_message tool bypasses validate_media_delivery_path security check
- Proposal: Add Mnemosyne to official memory provider documentation
- feat(swarm): support custom verifier/synthesizer body + skills
- Template conversion failed
- Error occurred in the operation of the agent node in the workflow.
- PubSub client overrides Sentinel client when REDIS_USE_SENTINEL is enabled
- Frontend description of the Retrieval node output does not match the actual output
- JSON type input var raise Intenal server error
- cannot extract elements from a scalar
- 负载均衡 为模型配置多组凭据,并自动调用,此功能无法选择
- add models is error
- panic: could not create filter
- Persist partially generated messages when /chat-messages/:task_id/stop is called
- MCP server connection fails with 403 — request never leaves Dify (SSRF proxy suspected)
- Support durable async execution backends for long-running workflow steps
- [Xiaomi MiMo] Credentials validation fails with 400 "Not supported model mimo-v2-flash" when using Token Plan endpoint (v0.0.7)
- After clicking preview on a parent-child segmented knowledge base, it shows 0 chunks
- Retrieval score differs between UI upload (.docx) and API upload (.txt) despite identical chunk content and embedding model
- gemini cli crash again
- Xbox gift card code damage
- Damage caused by the gemini cli crash
- ioctl(2) failed, EBADF (Bad File Descriptor)
- Feat: Support Bun as an alternative runtime/package manager for updates and extensions
- fatal error again!!!!
- ioctl error
- Critical Crash: ioctl(2) failed, EBADF in ShellExecutionService.resizePty
- ioctl(2) failed, EBADF
- v0.44.0 Regression: Critical crash with ioctl(2) failed, EBADF during PTY resize
- Crash on startup: ioctl(2) failed, EBADF in UnixTerminal.resize
- Crash: `ioctl(2) failed, EBADF` in `node-pty` during PTY resize on macOS
- Gemini CLI crashes with `ioctl(2) failed, EBADF` in `node-pty` during `resizePty`
- Remote Role
- ERROR ioctl(2) failed, EBADF /home/mich
- RangeError: Maximum call stack size exceeded
- EBADF Error during folder creationg broke session and terminal glitches
- MAIP / Gargoub Project - Mediterania - North Coast
- Gemini cli crash again in this morning
- ERROR ioctl(2) failed, EBADF
- Verified node install fails — Checksum verification failed (Cloud)
- The extended debugging key did not arrive during registration.
- CollaborationPane unmounts collaboration store on single-user instances, causing permanent "No network connection" state
- Workflow cannot be saved when the name contains "->" (Potentially malicious string)
- automation does not work and does not show an error
- Raj Ai Automation
- Default Data Loader: DOMMatrix is not defined error
- Feature: Per-node execution timestamp overlay on canvas during workflow run
- AI Agent + Vertex `gemini-3.5-flash`: 400 "missing thought_signature" on sequential multi-turn tool calls (post-#24982)
- PDF Loader in Pinecone Vector Store fails due to pdf-parse version conflict (v2 not supported)
- emailReadImap: add UID deduplication, batch size cap, and numeric uid enforcement
- Manual node execution fails with "Could not find a node" when autosave is disabled (N8N_WORKFLOWS_AUTOSAVE_DISABLED)
- Schedule Trigger stopped firing — workflow Published & active, manual executions succeed, no automated fires for 2+ hours
- [MCP SDK] create_workflow_from_code intermittently returns HTTP 500, often as a false negative (workflow persists anyway, causing duplicates on retry)
- Credential-load wedge: workflows using googleApi/jwtAuth credentials silently fail to execute after key rotation
- Google Sheets Trigger every minute is not working manual Execute is working sent email
- [BUG] Plugin marketplace MCP connector remains stuck "still connecting" when mcp-remote requires OAuth
- [redacted at user request]
- Opus 4.7 behavioral regression: loaded instruction-following discipline degraded in recent Claude Code/Cowork updates
- [BUG] Tailscale via Homebrew CLI + Mac App Store GUI, both Macs on macOS, Cowork blocked by VPN detector despite Tailscale being a mesh VPN with no traffic interception
- stopShellPty on tab switch kills active sessions (exit 143) — regression in May 27 build
- [BUG] Long URLs are broken into multiple lines and become unclickable in terminal output
- [BUG] claude rm/stop/reap SIGKILLs background session tree without SIGTERM grace, orphaning git index.lock and similar
- [BUG] Default git workflow in the system prompt was pushed without context or consent
- [MODEL] Inconsistent output quality / Ignoring instructions (overfitting and inappropriate repetition of Korean vocabulary)
- You've hit your weekly limit · resets May 31 at 5pm (Asia/Shanghai)
- Paid yearly subscription silently downgraded to Free with no user action
- [Regression v2.1.153] Plugin bash hooks fail with "echo: write error: Permission denied" on Windows (claude-mem, shell: "bash")
- [BUG] Connector toggles in conversation are not clickable — must click text label instead
- [remote-control] Input from mobile app/browser not reaching host session — output works fine
- Model fails to read/reference CLAUDE.md contents despite being loaded in context
- [BUG] Claude Desktop reinstall destroys Code chat history (transcripts + Recents) while regular Chat history, project files, and memory all survive
- Bypass mode clamps to Accept Edits even with the toggle ON (Claude Code Desktop 1.9255.2 / CC 2.1.149)
- [BUG] TUI input freezes randomly mid-typing — entire prompt becomes unresponsive for minutes
- [BUG] Cowork downloads Linux ELF binary instead of macOS binary on macOS Sonoma 14.8.7 — exit code 132 (SIGILL) on every session
- [Feature Request] Persistent project memory — sessions forget everything on close, forcing users to keep many sessions open
- [Bug] Thread context stale after sleep/resume, returns outdated date and calendar data
- [FEATURE] Add context window usage indicator and warning before auto-compaction
- [BUG] Dictation error: Invalid character in header content ["x-config-keyterms"] on Windows
- [Bug] Anthropic API Error: Server rate limiting despite normal usage
- Does delegating work to `claude -p` subprocesses reduce context accumulation in the parent session?
- [BUG] Claude Code hangs on M1 Mac when terminal says "opening browser to sign in" and browser opens
- [BUG] Claude_Preview MCP preview_start spawns dev server with main-repo cwd instead of session's worktree cwd
- [Bug] Anthropic API Error: Server rate limiting during request execution
- [Bug] Anthropic API Error: Server rate limiting on concurrent requests
- [Bug] Ultraplan ready notification fires before cloud agent completes execution
- [BUG] API 500 ERROR ALL THROUGHOUT THE DAY
- [BUG] Cowork: Live Artifacts folder path changed in 1.9255.2, no automatic migration from Documents\Claude\Artifacts
- [Bug] Auto-compact never triggers despite statusline reporting "100% context used" (v2.1.153, Max sub, 200K mode)
- [BUG] [Desktop / macOS] 'Open in → New Window' detached session: font renders smaller than main, no per-window controls, Cmd+/Cmd- keystrokes routed to main window instead
- Feature request: option to switch between classic and new minimal UI
- [Feature Request] Show timestamps for each message
- [BUG] Terminal corruption when permission prompt appears while navigating Agent Teams agent selection menu
- [FEATURE] Allow users to customize the background color of the Claude desktop app beyond the current light/dark theme presets.
- [BUG] Statusline not displaying on Windows [fixed]
- Background agent UI Stop button is a no-op for stuck agents — process keeps consuming tokens
- Background agents silently die on session pause/resume — no completion notification, no work recovery
- Add option to hide email address from welcome banner
- [BUG] SSH Remote: `projects` field in remote ~/.claude.json becomes null after desktop restart — jsonl files intact, UI shows 'No messages yet' for every session
- [Bug] Claude Code not applying fixes despite claiming to complete tasks
- billing is unfair and poorly documented
- [BUG] Claude Code on the web: declared plugins inactive on first session, require restart to fully load
- [BUG] Restore from archive deleted sessions instead of restoring them
- [BUG] M365 connector fails with AADSTS50011 in Cowork — localhost vs 127.0.0.1 redirect URI mismatch
- claude agents: workflow slash-commands missing from dispatch-input completion (regression-adjacent to #61424)
- Claude Desktop's Info.plist missing TCC usage strings, blocks all EventKit-based MCP servers
- False-positive safety blocks on self-administered governance amendments — request for owner-authority mode for verified professional users
- [BUG] Stop pushing "AUTO"-mode
- [DOCS] Plugin marketplace guide omits `skipLfs` option for git-based sources
- [DOCS] MCP docs omit combined startup notification for MCP server and connector authentication
- [DOCS] Agent view docs omit macOS Privacy & Security identity for background agents
- [DOCS] Npm update docs do not explain release-channel behavior for `claude update`
- [DOCS] Agent SDK docs omit `subagent_type: "claude"` worktree and output persistence behavior
- [DOCS] Background session docs omit `$CLAUDE_JOB_DIR` temp-file behavior
- [FR] mask env-var values in 'claude mcp get <server>' output
- [FR] subagent worktrees should not inherit stale local 'user.email' from prior dispatches
- [BUG] Windows: Grep tool leaks rg.exe + conhost.exe processes (~2000 zombies / 14 GB RAM in long sessions)
- [BUG] Stats dashboard "Peak hour" appears off by one hour
- [BUG] Diff highlight (teal SGR background) bleeds past changed text in 2.1.150–2.1.153
- [FEATURE] confirm before deleting session
- Plugin PostToolUse hooks still silently skip in Claude Desktop / Cowork (re-filing closed #51904)
- /code-review skill: silent fallback to main...HEAD reviews other people's commits, and JSON-only output is hard to read
- Monitor tool doesn't source the shell snapshot like Bash does; PATH-dependent tools (jq, sleep, etc.) fail in Monitor commands on macOS/Nix
- [Bug] Long input lines truncated with ellipsis while typing instead of wrapping in terminal UI
- [FEATURE] VS Code extension: Render submitted user messages as Markdown in chat
- OSC 52 copy from Claude TUI doesn't reach clipboard inside tmux (regression in 2.1.146–2.1.153)
- [BUG] RemoteTrigger create/update returns HTTP 400 with circular error: "event_type is required" / "unknown field event_type"
- [BUG] Option to hide or minimize the built-in "status footer" (multi-line debug/cost panel) [re-raise of #31475]
- [Bug] Feedback submissions being closed without review or action
- [FEATURE] Word-jump cursor navigation in Chat input (option+arrow / bindable actions)
- [FEATURE] ! shell mode: filesystem tab completion
- [BUG] API Error: Usage credits required for 1M context
- claude agents: OSC 52 clipboard emission broken in tmux (regression in 2.1.146–2.1.153)
- CLI crashes on macOS 15 M3 - exit code 1
- [FEATURE] Support Cmd+V image paste from clipboard
- [FEATURE] Enhance claude.ai M365 connector to support MS Planner
- [BUG] Slash command autocomplete hijacks pasted absolute file paths starting with /
- PreToolUse hook `if` filter false-positives on complex Bash commands
- [BUG] Diff panel hangs/whites out
- Feature Request: Support drag-and-drop for binary documents (.wps, .doc, .docx, .xlsx, .pdf) in VS Code extension
- [BUG] activation of 1M context in VSCode
- [FEATURE] Support i18n / language localization for built-in slash command outputs
- Ctrl+V para colar imagens deixou de funcionar no CLI (Windows, PowerShell)
- [FEATURE] Please add Norwegian (Bokmål/Nynorsk) language support to the Claude Code interface
- [BUG] OTel log events (claude_code.user_prompt, api_request_body, tool_decision, hook_execution_complete) emitted with empty trace_id/span_id while sibling spans correlate correctly
- [BUG] Cowork crashes on every message, no VM logs generated, missing AppData\Roaming\Claude
- [FEATURE] first-class session handoff + per-session token budgets for unattended runs
- [FEATURE] Smart paste: convert clipboard code to file reference chips (like Cursor)
- [Feature Request] Restore chat pin functionality to title chat submenu
- [BUG] SIGILL issues with version 2.1.153
- [BUG] Cowork plugin upload fails with generic "Plugin validation failed" when a `description` field in any SKILL.md frontmatter contains angle brackets (`<…>`)
- [BUG] Desktop App 2.1.144+: startup scanner deletes cliSessionId from claude-code-sessions local files on every launch — session not found on disk
- [Feature Request] Add keyboard shortcut to copy last message with proper formatting
- [MODEL] Opus 4.7 not 1M
- Allow naming/renaming background agents in `claude agents` view
- Stale worktrees in .claude/worktrees/ are never cleaned up, consuming massive disk space
- Agent worktrees are never cleaned up, silently consuming disk space
- Subagent worktrees not auto-cleaned when reviewer writes scratch files
- [Bug] Skill initialization hangs for extended duration in Plan Mode
- Claude Desktop writes malformed registry Run entry (nested escaped quotes) - crashes Windows Task Manager and other Run-key parsers
- IME candidate window shows at bottom-right corner instead of caret position (Windows CMD)
- [BUG] Pressing 'Escape' doesn't close the /BTW conversation when the main conversation is asking for approval
- [BUG] Opus 4.7 (1M) intermittently emits empty-string values for tool_use.input fields, killing the session
- FleetView agent UI shows "running" with incrementing elapsed time after agent has returned
- /doctor flags context-scoped cmd+c binding as macOS conflict (false positive)
- [BUG] Text Rendering in Elvish
- Desktop app: Bypass Permissions mode flips to Accept Edits on first prompt (M5 / macOS 26.5)
- [Workaround] Date-Weekday Verification Hook — Prevents Claude from writing wrong weekdays
- [BUG] Claude Code create c:/memfs directory without asking me.
- [BUG] Claude Code's Bash execution waits forever with no processes running
- [BUG] usage stays stuck waiting for 5 hr limit after upgrading to premium seat in team plan
- [Workflow tool] resume cache is unreachable for nontrivial workflows because LLM dispatchers can't transcribe args byte-exactly
- Code review (Preview): "Add a repository" shows no results for private GitHub org repos
- [BUG] /context commands blows up context
- [Feature Request] Add precache expiry hook to enable proactive compaction before token eviction
- [BUG] Context indicator shows 0% at session start despite ~20K+ tokens already loaded
- [Feature Request] Add semantic search for --resume session history
- [Feature Request] Add session search, tagging, and filtering capabilities
- [BUG] Cowork Dispatch reports "desktop not available" on Windows 11 while standard Cowork works normally
- [Bug] Claude Code provides incorrect suggestions with high confidence despite errors
- defaultMode: acceptEdits silently overrides per-path permissions.ask rules for Write/Edit
- [FEATUR configurable tip interval (e.g. tipIntervalSeconds: 30 in settings)E]
- Plugin marketplace fails to load: schema rejects 'displayName' key (v2.1.153)
- claude agents: in-session copy uses broken OSC 52 path while overview correctly uses tmux buffer
- [BUG] Plugin agent descriptions (and custom agents) load unconditionally into context — no parity with disable-model-invocation for skills
- Crashed ultrareview consumed a free credit despite producing zero findings
- [Bug] Character rendering issue - invisible or missing text display
- [BUG] Cowork: processo Claude Code encerra com código 3 — .claude.json não contém token de autenticação (Windows 11 25H2)
- [BUG] 2.1.153 silently discards tools/list response from rmcp 0.12.0 HTTP MCP server (works in 2.1.152, wire-identical handshake)
- VS Code extension: option to auto-resume last session when reopening a workspace folder
- [Bug] Conversation continuation failure
- [BUG] Cowork crashes every time I start a new chat or attempt to continue an existing one in any project. The error displayed is: "Claude Code è andato in crash
- [Bug] Unannounced quota changes
- Native update/install fails with 'socket connection was closed unexpectedly' behind proxy — undici TLS incompatibility
- [BUG] Session name reverting after manual change
- [BUG] 非正常思考,上下文过长时,一直显示思考,点击interrupt按钮失效
- Honor `tools:` frontmatter when an agent is invoked via `@mention` — strip `Task` only when the agent did not declare it
- macOS TCC popup still recurring on v2.1.153 — "2.1.153" would like to access data from other apps
- Claude Code leaks pty handles — exhausts pseudo-terminals on macOS after long session
- [Bug] Agent fails to execute or respond to user input
- [BUG] Persistent "Expecting value: line 1 column 1 (char 0)" JSON parse error after tool execution
- [Feature Request] Implement proactive unit test coverage recommendations for recurring bugs
- VS Code panel lacks status line + terminal lacks image paste in Codespaces, forcing a tradeoff
- `/powerup` only shows ~10 lessons — allow viewing the full catalog
- [Bug] Context contamination after auto-compact with unrelated email draft of Tejo/Sado Basin
- [Bug] VSCode terminal output displays corrupted text with garbled symbols
- [Feature Request] Add LaTeX/KaTeX math rendering to TUI
- [Bug] Sub-agent PR review results not validated by orchestrating agent
- Subagents on Pro 1M tier: trivial probes pass, real workloads fail at first tool call (probe-vs-workload divergence)
- Path-scoped rules and subdirectory CLAUDE.md not loaded when creating new files matching the pattern
- AskUserQuestion: cancelling during extended thinking poisons the whole session with 400 'thinking blocks cannot be modified' (2.1.153); concurrent prompts overwrite each other
- Ideas Missing from Claude Cowork Menu (Windows)
- [BUG_BOUNTY_SAFE_POC_2026] Prompt Injection RCE Test - Command Execution Proof
- [BUG] Cowork scheduled task: execution history row not showing after successful run
- Resuming an extended-thinking session fails permanently with 400 "thinking blocks cannot be modified" (transcript stores thinking text as empty but keeps signature)
- [Bug] Plugin-registered CwdChanged and FileChanged hooks don't fire (settings.json works) — v2.1.153
- Auto-archive on PR merge / branch delete — clarify autoArchiveSessions semantics or add dedicated opt-out
- `claude mcp add` echoes Authorization header value verbatim to stdout, leaks bearer tokens to terminal and session transcripts
- [BUG] Bug report — /insights skill, Claude Code The /insights skill outputs a malformed file path.
- Plugin slash commands render with '*'-inline format instead of two-column, despite matching official plugin shape
- [Bug] Unexpected long text generation without user input or goal
- [Bug] Thinking blocks causing task progression blocked without user modification
- [BUG] (Critical!) contamination by an unknown session simirlar to the report => [Bug] Context contamination after auto-compact with unrelated email draft of Tejo/Sado Basin #63137
- [Critical] Opus 4.7 Korean output degeneration — Korean grammar itself collapses in long contexts
- [BUG] Title: Autocompact buffer persists across /clear — wastes tokens for irrelevant old context
- [Bug] Auto-Compact loses user input before processing in conversation history
- Feature: per-invocation effort parameter + runtime session-config introspection for skills
- Auto-mode classifier mislabels Azure DevOps vote -5 as "Reject" when denying PR vote actions
- [BUG] Claude Desktop and Claude Code CLI never re-register MCP tools after OAuth 2.1 handshake on a remote HTTP server
- [BUG] Workspace file tags leak across sessions
- [BUG] Ink renderer crashes on Windows 11 build 26200 (Canary) duplicate banners, terminal mode leaks, mid-operation aborts
- [BUG] Claude Code Desktop issue
- PTY master fd leak in Claude desktop app exhausts macOS kern.tty.ptmx_max after ~2-3 days
- [BUG] Claude Code — Session Management after Unexpected Interruption
- [Windows] Cowork OpenTelemetry exporter does not initialize - zero events emitted to any destination, including loopback
- [Bug] Opus 4.7: 400 `thinking blocks ... cannot be modified` on long extended-thinking sessions, triggered by history-altering events (scheduled prompts / parallel tool-call cancellation)
- [BUG] API Error: Server is temporarily limiting requests (not your usage limit) · Rate limited
- Multi-plugin custom marketplace: only first plugin registered in installed_plugins.json, skills don't load
- [BUG] Git push through the SDK's git proxy fan-outs into ~500 GitHub REST API calls, exhausting the 5,000/hour budget after a handful of pushes
- [BUG] Claude took liberties it really shouldn't with my global config
- [BUG] Agent window focus lost after navigating with arrow keys, causing scroll deadlock
- [BUG] `--model` flag silently ignored in interactive sessions (works in `--print` only)
- [BUG] Dispatch permanently shows "desktop appears offline" on Windows 11 - never worked on first use
- feat: support per-command enableWeakerNetworkIsolation as safer alternative to dangerouslyDisableSandbox
- /code-review outputs a raw JSON array instead of readable findings
- [BUG] Cowork — Additional allowed domains ignored on Team plan; same domain works on Pro plan
- Haiku
- [Bug] False positive blocking beneficial outcomes in tool execution
- 3P Bedrock SSO: credentials silently expire without triggering re-auth on day 2+
- CLAUDE_AUTOCOMPACT_PCT_OVERRIDE in settings.json env block silently ignored by autocompact logic
- Auto-compaction deletes main session JSONL before verifying summary completion, causing data loss
- [Bug] Claude Code not executing stated actions or producing expected results
- [FEATURE] Deferred Messages — Queue Input for End of Turn
- [BUG] Up/Down arrows in input box navigate history instead of moving cursor — regression in 2.1.149+
- Cancelling a parallel tool-call batch corrupts thinking blocks -> 400 "thinking blocks cannot be modified" permanently wedges the session
- Claude Code caused data loss, then contradicted itself about recovery (two incidents, one session)
- [Bug] Unclear error messages from Claude Code CLI
- [Bug] Agent tool rejecting due to context size limit exceeded
- claude agents: daemon and bg-spare processes spin at ~100% CPU when idle
- [BUG] Compaction fails with "context window limit" error even when context usage is low (e.g., 20%) — regression in v2.1.153
- Remote Control entitlement lost after May 27-28 incident — `Error: Remote Control is not yet enabled for your account` on active Max subscription
- PreToolUse hook exit code 2 does not block Write tool
- [Bug] Thinking blocks in latest assistant message are immutable
- GUI: dispatch file:// and custom-scheme clicks to OS shell handler
- Show current model in statusLine by default
- [Bug] Agent console becomes unresponsive to keyboard input after multiple agents initialized
- [FEATURE] PreToolUse hooks should have a way of updating the environment
- [Bug] Unable to start or use Claude Code CLI
- [BUG] Repository not visible in Claude Code web repo picker
- Session permanently wedged on 400 "thinking blocks cannot be modified" after parallel tool_results
- [Bug] @ autocomplete loses sibling repos after a file edit in multi-repo workspace
- Unclear error message when creating sub-agent without authentication
- [Bug] Anthropic API errors causing frequent failures and high token usage
- [BUG] @ mention file picker only shows packages, not individual files (desktop app - Code tab)
- [Bug] TUI panel footer remains sticky and consumes excessive terminal space
- PR-status polling exhausts GitHub GraphQL rate limit on repos with many open PRs
- [BUG] Windows: welcome panel not shown in some project folders (2.1.153)
- [Bug] Anthropic API Error: thinking blocks corrupted during context compaction with extended thinking enabled
- API 400 "thinking blocks cannot be modified" permanently bricks session during agent activation (interleaved thinking + tool use)
- Right-click Copy copies the whole message instead of the selection; pasted text retains dark background
- Mid-session model switch corrupts conversation when extended thinking is enabled (API 400: 'thinking blocks cannot be modified')
- [BUG] Markdown file links in chat output do not open files when clicked (VS Code extension)
- Stuck retry loop: `400 thinking blocks cannot be modified` on large interleaved-thinking turns using AskUserQuestion
- [FEATURE] Prompt user for approval before auto-compaction proceeds
- Custom MCP connectors not attachable to scheduled routines — no UUID discovery path
- [BUG] Claude in Chrome — Navigation blocked for teams.cloud.microsoft and outlook.cloud.microsoft after Microsoft domain migration**
- [BUG] Claude Desktop — Personal plugins panel renders list but is entirely non-interactive (macOS, v1.9255.2)
- [Bug] error when using Workflows
- [BUG] Persistent "update available" notification despite being on latest version
- [BUG] Sweep Agent from /code-review never completes
- [Bug] Tool calls not executing or returning results
- [FEATURE] Cloud-synced memory and settings across machines
- [Bug] Terminal UI freezes when Ctrl+O view exits during interactive prompt in plan mode
- Continuous api errors when using claude code with Opus 4.7 with thinking on low
- [Feature Request] Add support for installing and using previous Claude Code versions
- [Bug] Extended Thinking: Summarized thinking blocks fail signature validation when resent to API
- [Bug] Anthropic API Error: 'thinking' blocks cannot be modified
- [Bug] Anthropic API Error: Thinking blocks cannot be modified with extended thinking mode
- Feature request: Lazy/on-demand MCP server connections
- [Bug] Tool Arguments Parsed as String Instead of Object
- [Bug] Anthropic API Error: Insufficient context provided
- [Bug] Claude Opus occasionally uses moskovian(russian) orthography instead of Ukrainian in system-prompted responses
- Opus 4.8: backgrounded task completions (subagents AND Bash) crash with 400 "thinking blocks cannot be modified"
- [Bug] Opus 4.7 fabricates stable preferences ("my default") to rationalize arbitrary choices when challenged
- [Bug] Unable to update Claude Code CLI
- [BUG] Desktop app: /remote-control mints link + connects bridge (main.log) but in-chat link/QR panel never renders
- Feature: sessionColor and sessionName in .claude/settings.json
- [BUG] Anthropic API error: thinking blocks
- [FEATURE] Support Remote MCPs in Cowork as in Claude Code
- [Bug] Anthropic API Error: 400 Bad Request with Redacted Thinking - 0 4.7 & 4.8
- [Bug] Anthropic API Error: Cannot modify thinking blocks from different model versions
- Interleaved thinking + multi-tool turn corrupts thinking block (text blanked, signature kept) → permanent 400 'blocks must remain as they were'
- [BUG] Mode/permission changes mid-tool-loop (effortLevel: xhigh) poisons entire session
- Session failure log: Opus 4.6 ignores its own rules for an entire session
- [BUG] "400 Guardrail was enabled" error when using Claude Opus 4.8 with AWS Bedrock
- [Feature Request] Add subagent approach selection option to avoid accidental feedback
- Persistent 400 'thinking blocks in the latest assistant message cannot be modified' — interleaved thinking persisted with empty text + signature bricks sessions
- [BUG] DesktopvsApp
- [BUG] Opus 4.7 cache hit rate collapse after May 27 incident — Messages 1.1k→88.9k in 9 minutes, $630/session
- [Bug] Anthropic API Error: Invalid thinking block format
- [BUG] FUCK CLAUDE
- Opus 4.8 extended thinking: Stop hook block re-entry corrupts thinking blocks → 400
- [Bug] 4.8 Fails when accessing previous model history
- [Bug] Unintended File Modifications During Execution
- [DOCS] Model configuration docs omit lean system prompt default scope and model exceptions
- Add "Always allow globally" option to permission prompts
- Server-side model upgrade (Opus 4.7→4.8) wedges in-flight sessions with `thinking blocks cannot be modified` 400
- [DOCS] AskUserQuestion docs missing multiple-choice prompt decision threshold
- [DOCS] Agent view docs omit shell-command background session launch syntax
- [DOCS] Agent view dispatch input docs incorrectly imply `/logout` dispatches as a prompt
- [DOCS] Claude in Chrome docs omit connected-browser selection behavior
- [DOCS] Plugin docs omit `defaultEnabled: false` for opt-in plugins
- Feature Request: Customizable chat text colors for user and assistant messages
- [DOCS] `/plugin` Discover tab docs omit directory-based suggested plugin pins
- VSCode Chrome integration silently fails: 3 distinct bugs
- [DOCS] MCP stdio docs omit session environment variables
- [Bug] Anthropic API error on second request within session with Claude Opus 4.8
- Cowork emits a blank session "index" handoff on focus when a CLI session is paused awaiting input
- [DOCS] MCP docs omit `claude mcp list/get` pending-approval output for unapproved project servers
- [BUG] /compact fails with 400 error when last assistant turn contains thinking blocks
- [DOCS] `/claude-api` docs omit Opus 4.8 migration guidance
- [DOCS] Fast mode docs still recommend deprecated Opus 4.6 override variable
- [DOCS] Bash tool docs omit `$TMPDIR` consistency across sandboxed and unsandboxed commands
- [Bug] Anthropic API Error: 400 Bad Request on Extended Thinking
- [DOCS] Background session docs omit worktree-isolation behavior for spawned subagents
- Built-in mechanistic self-verification of verifiable claims (symmetric to the auto permission gate)
- [DOCS] Worktree docs do not clarify `worktree.baseRef: "head"` inside linked worktrees
- [BUG] Excessive RAM usage with multiple parallel chats (~10 sessions → 30 GB memory pressure, macOS OOM)
- [DOCS] Managed MCP policy docs omit invalid `allowedMcpServers`/`deniedMcpServers` entry behavior
- [DOCS] Effort docs omit `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` unsupported-model behavior
- Regression (2.1.147–2.1.150?): resuming an extended-thinking session after a CC update/model-switch → unrecoverable 400, session bricked
- [DOCS] Windows updater docs omit `claude.exe` in-use recovery guidance
- [DOCS] VS Code auto mode docs still tie mode-picker visibility to bypass-permissions setting
- [DOCS] MCP docs omit `/mcp` tool list and detail rendering behavior
- [DOCS] Fine-grained tool streaming docs still describe provider opt-in behavior
- bypassPermissions: session startup reads flat pref, GUI toggle writes per-account pref — they never sync
- [BUG] Claude Desktop Code tab causes disk write limit violation — 8.5GB in 11 min, macOS kills app (M5, v1.9659.1)
- Ultrareview v2.1.96: docs describe /tasks command + claude ultrareview --json subcommand that don't exist; findings hard to read after completion
- I'd be happy to help create a GitHub issue title, but I don't see the error message in your message. Could you please share the specific error you're encountering? That way I can generate an accurate and descriptive issue title for you.
- [BUG] Claude in Chrome `file_upload` rejects all scheduled-task sessions with misleading error (real cause: INVALID_SESSION)
- Extended thinking: signed thinking block 'cannot be modified' (400) permanently wedges session
- RTL text support for Hebrew (and Arabic) in Claude Code
- [Bug] Random errors occurring across multiple operations