Not All Features Are Created Equal: A Mechanistic Study of Vision-Language-Action Models
Organizations: Case Western Reserve University
Abstract
A fine-tuned Vision-Language-Action (VLA) policy can easily place the alphabet soup in the basket on command, just as it saw during fine-tuning. However, if the basket is shifted five centimeters to the left, it drops the soup off the table. We developed an interpretability pipeline to investigate what such a policy is computing. Injecting task A's activations into the action expert while the policy looks at task B's scene makes pi0.5 execute task A's motor trajectory in 99.6% of episodes (). The injected program is bound to absolute workspace coordinates and ignores the visible scene, which provides a mechanistic account of the perturbation brittleness that concurrent benchmarks report. The binding holds on a physical UR10e: directed replay redirects the commanded task in 26/26 rollouts in one direction and 18/26 in the other, with no-injection and random-direction controls at the floor, and once the source object is moved 10--15,cm the arm grasps and releases at the recorded coordinates in 50/50 trials, picking up the wrong block when one sits there and closing on empty air when none does. Applying the same interventions to six VLAs on LIBERO, MetaWorld, SimplerEnv, and ALOHA over 420{,}000+ rollouts yields three further findings: every architecture encodes the instruction, and four of the five weight it below vision whenever the scene alone identifies the goal; under the standard replacement write-back the SAE pooling that preserves behavior is architecture-specific (pi0.5 per-token, X-VLA mean-pool, SmolVLA indifferent), and goal selection and motor generation separate into VLM and expert pathways wherever the two are distinguishable. We release Action Atlas (https://action-atlas.com), an interactive platform covering all 520+ trained SAEs, 79 identified concepts, and the scored UR10e rollouts. Code: https://github.com/CWRU-AISM/action-atlas
Figures & tables
| Model | Params | Layers | Dim | Action Gen. | Pathway | Bench. |
|---|---|---|---|---|---|---|
| ( Physical Intelligence, 2025 ) | 3B | 18 | 1024 | Flow (50 steps) | Dual (PG + Exp.) | LIBERO |
| OFT ( Kim et al., 2025 ) | 7B | 32 | 4096 | Cont. L1 regr. | Single (Llama-2) | LIBERO |
| X-VLA ( Zheng et al., 2026 ) | 1B | 24 | 1024 | Flow matching | Single (Flor.-2) | LIB., SimpE. |
| SmolVLA ( Shukor et al., 2025 ) | 450M | 32 | 960/480 | Flow matching | Dual (VLM + Exp.) | LIB., MW |
| GR00T ( Bjorck et al., 2025 ) | 3B | 32 | varies | Diff./flow | Triple (D+E+V) | LIBERO |
| ACT ( Zhao et al., 2023 ) | 80M | – | – | CVAE | Enc.-Dec. | ALOHA |
| Model | Episodes | SAEs | Concepts |
|---|---|---|---|
| 65,000+ | 36 | 43 | |
| OpenVLA-OFT | 70,700+ | 32 | 45 |
| X-VLA | 50,000+ | 96 | 82 |
| SmolVLA | 42,000+ | 192 | 45 |
| GR00T N1.5 | 164,700+ | 68 | 36 |
| ACT | 1,870 | – | – |
| Model | Condition | Goal | Object | Spatial | 10/Long ⋄ |
|---|---|---|---|---|---|
| Baseline | 91.9% | – | 77.3% | 62.5% | |
| Null, no injection | 0% | – | – | – | |
| Same-scene inject ALL | 91.0% | – | – | 75.2% | |
| OFT | Baseline | 100% | 100% | 90% | 90% |
| Null + zero any layer | 14.1% | 14.6% | 14.4% | 13.5% | |
| X-VLA | Baseline | 96.7% | 100% | 90.0% | 100% |
| Model | Pairs | Success | Displacement |
|---|---|---|---|
| 1,968 | 2.6% | cos(traj, src) cos(traj, dst): 99.6% | |
| OFT | 1,079 | 50% † | cos(traj, src) cos(traj, dst): 77.9% |
| X-VLA | 3,150 | 0% | cos src dst (99.8%) |
| SmolVLA | 732 | 0% | Expert: 15.8% source-like |
| GR00T | 270 | 0% | cos src dst (57.0%) |
| Model / Suite | Baseline | Null | Wrong Obj. |
|---|---|---|---|
| / object | 77.4% | 77.0% | 74.2% |
| / goal | 83.3% | 80.0% | 76.7% |
| OFT / object | 100% | 100% | 100% |
| OFT / goal | 100% | 10% | 10% |
| OFT / spatial | 90% | 70% | 60% |
| X-VLA / object | 100% | 60% | 60–90% |
Appendix figures & tables44 assets
Supplementary material from the paper’s appendix.
Appendix
| Phenomenon | OFT | X-VLA | SmolVLA | GR00T | ACT | |
|---|---|---|---|---|---|---|
| Visual pathway dominance | Y (73%) | Y (14%) | Y (all layers) | Y | Y | Y |
| Cross-task failure | Y (2.6%) | Y ( 50%) | Y (99.8% src) | Y (16% src) | Y (57%) | Y (0%) |
| Language sensitivity | suite-indep. | suite-dep. § | suite-dep. § | partial ∗ | suite-dep. | N/A |
| Pathway specialization | Y | N/A | N/A | Y (2 ) | Y | N/A |
| Per-token SAE req. | Y | Y | reversed † | Y | partial ‡ | N/A |
| Causal sensitivity | narrow (54%) | wide (92%) | wide (82%) | narrow (28%) | mixed (59%) | N/A |
| Task | Baseline | Per-Token SAE | Mean-Pooled SAE |
|---|---|---|---|
| 0 | 198/250 | 103/250 | 2/250 |
| 1 | 247/250 | 248/250 | 0/250 |
| 2 | 203/250 | 198/250 | 1/250 |
| 3 | 151/250 | 248/250 | 0/250 |
| 4 | 249/250 | 202/250 | 3/250 |
| 5 | 249/250 | 247/250 | 0/250 |
| Concept | Best Layer | 2nd Best | 3rd Best |
| Action Concepts | |||
| PUT | L17 (133k) | L16 (111k) | L15 (86k) |
| OPEN | L15 (103k) | L16 (79k) | L13 (71k) |
| PUSH | L17 (412k) | L13 (275k) | L14 (270k) |
| INTERACT | L17 (274k) | L12 (261k) | L15 (253k) |
| Object Concepts | |||
| Target Suite | Baseline | After PUT Ablation |
|---|---|---|
| Goal | 100% | 5% |
| Object | 100% | 0% |
| Spatial | 100% | 11% |
| Concept | Tasks Active | Tasks Inactive | Accuracy |
|---|---|---|---|
| PUT | 1,3,4,5,6,7,8 | 0,2,9 | 100% |
| OPEN | 0,1 | 2-9 | 100% |
| INTERACT | 9 | 0-8 | 100% |
| Layer | Baseline | SAE Reconstruction |
|---|---|---|
| Layer 0-11 | 80-90% | 0-5% |
| Layer 12-17 | 80-90% | 0-5% |
| action_out_proj_input | 93% | 76% |
| Feature Selection | Baseline | With Ablation |
|---|---|---|
| Action-correlated | 93% | 79% |
| Concept-aligned | 93% | 93% (no ablation) |
| Intervention | Condition | SR |
| Recovery | Ablate full episode | 0% |
| Ablate + steer | 0% | |
| Ablate first 50 + steer | 0% | |
| Boosting | Dampen | 5.7% |
| Boost | 5.7% | |
| Substitution | Ablate OPEN + boost PUT 0.5 | 0% |
| Ablation Window | Avg Effect | Phase |
|---|---|---|
| step0 | 0% | Episode start |
| early (0-50) | -56% | Approach/grasp |
| mid (50-150) | -57% | Manipulation |
| late (150-300) | -1% | Placement |
| full (0-300) | -76% | All phases |
| Suite | Baseline | Full | Early | Mid | Late |
|---|---|---|---|---|---|
| LIBERO-Goal | 100% | 73.1% | 73.2% | 92.7% | 92.4% |
| LIBERO-Long | 100% | 53.8% | 55.6% | 75.3% | 75.9% |
| LIBERO-Object | 100% | 93.9% | 94.0% | 95.0% | 95.3% |
| Average | 100% | 69.5% | 70.3% | 86.2% | 86.4% |
| Features Ablated | Success Rate |
|---|---|
| 0 (baseline) | 90% |
| 1 (feature 3259) | 0% |
| 2 | 0% |
| 5 | 0% |
| Ablation Timestep | Success Rate |
|---|---|
| Step 0 only | 0% |
| Step 1 only | 100% |
| Step 2 only | 80% |
| Steps 200+ | 80% |
| Concept | Selectivity | Type |
|---|---|---|
| PUSH | +8.9% | Task-specific |
| WINE_BOTTLE | +7.5% | Object-specific |
| PUT | -6.7% | Motor primitive |
| OPEN | -10.0% | Motor primitive |
| INTERACT | -11.1% | Motor primitive |
| Suite | Baseline | Null Layer | Aggregate |
|---|---|---|---|
| libero_goal | 90% | 0% | 33/234 (14%) |
| libero_object | 90% | 0% | 43/294 (15%) |
| libero_spatial | 90% | 0% | 31/216 (14%) |
| libero_10 | 9/10 tasks | 0/10 tasks | – |
| Suite | Episodes | Aggregate Success |
|---|---|---|
| libero_goal | 582 | 87.8% |
| libero_object | 162 | 77.8% |
| libero_spatial | 192 | 74.0% |
| libero_10 | 582 | 71.8% |
| Window | Task Survival | Surviving Tasks |
|---|---|---|
| Baseline | 9/10 | Tasks 0–5, 7–9 |
| null_early | 0/9 | None |
| null_mid | 0/9 | None |
| null_late | 2/9 | Tasks 3, 9 |
| Suite | Min | Max | Mean | Layers 0.70 |
|---|---|---|---|---|
| LIBERO-Spatial | 0.969 | 0.994 | 0.988 | 32/32 (100%) |
| LIBERO-Goal | 0.845 | 0.941 | 0.896 | 32/32 (100%) |
| LIBERO-10 | 0.692 | 0.837 | 0.780 | 30/32 (93.8%) |
| LIBERO-Object | 0.608 | 0.885 | 0.813 | 29/32 (90.6%) |
| All suites | 0.608 | 0.994 | 0.869 | 123/128 (96.1%) |
| Suite | Early (L0–7) | Middle (L8–23) | Late (L24–31) |
|---|---|---|---|
| LIBERO-Spatial | 0.984 | 0.991 | 0.986 |
| LIBERO-Object | 0.719 | 0.834 | 0.863 |
| LIBERO-Goal | 0.859 | 0.896 | 0.933 |
| LIBERO-10 | 0.733 | 0.779 | 0.827 |
| Model | Probe Target | Metric | Result |
|---|---|---|---|
| (expert) | State prediction | 0.45 | |
| (expert) | Success prediction | AUC | 0.93 |
| (PaliGemma) | Goal classification | Accuracy | 76.4% |
| (PaliGemma) | Prompt classification | Accuracy | 99.3% |
| (PaliGemma) | Workspace region (L15) | Accuracy | 99.3% |
| OFT | Task identification | Accuracy | 97.8–100% |
| Suite | Episodes | Categories | ANOVA |
|---|---|---|---|
| libero_object | 1,496 | 22 | |
| libero_spatial | 353 | 9 | |
| libero_goal | 380 | 6 |
| Suite | Condition | Success | n |
| GOAL | own_prompt (baseline) | 91.5% | 236 |
| cross_prompt, no inject | 0.0% | 236 | |
| cross_prompt + PaliGemma ALL | 0.4% | 236 | |
| cross_prompt + Expert L16 | 1.3% | 236 | |
| SPATIAL | own_prompt (baseline) | 100% | 34 |
| cross_prompt, no inject | 64.7% | 34 |
| Suite | Baseline | Zero any layer | Null prompt | Zero eff. | pp |
|---|---|---|---|---|---|
| Goal | 96.7% | 0% | 10% | 82.6% | |
| Object | 100% | 0% | 60% | 98.2% | |
| Spatial | 90.0% | 0% | 48% | 85.2% | |
| LIBERO-10 | 100% | 0% | 28% | 74.7% |
| Suite | Baseline | Expert zero | Zero eff. (exp) | pp (exp) |
|---|---|---|---|---|
| Goal | 75.0% | 60–83% | 14.6% | |
| Object | 78.5% | 60–83% | 0.0% | |
| Spatial | 67.5% | 47–77% | 32.7% | |
| LIBERO-10 | 40.7% | 0–33% | 20.3% |
| Suite | Baseline | Zero DiT | CF “other” | Zero eff. | pp |
|---|---|---|---|---|---|
| Goal | 97.0% | 0% | 18.9% | 68.8% | |
| Object | 99.0% | 0% | 73.3% | 69.6% | |
| Long | 75.0% | 0% | 61.7% | 42.2% |