{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2607-16448","title":"Retrieval is Enough: Training-Free Interpretability with a Tool-Using Agent","arxiv_id":"2607.16448","date":"2026-07-17","proceeding":null,"authors":["Sriram Balasubramanian","Soheil Feizi"],"abstract":"Interpretability methods for neural network activations span a wide cost spectrum, from cheap, training-free techniques (such as linear probes, PCA, SVD) to more expensive training-based ones (such as SAEs and activation oracles). Training-based methods are typically more powerful, in part because they leverage large activation datasets during training. This raises a natural question - do they actually surface insights that go beyond what is recoverable from the training dataset itself? To address this, we equip an LLM agent with a vector database of activations paired with their textual contexts, along with tools for manipulating activations - projecting out directions in latent space, computing activation differences and averages. The agent iteratively queries the database, forms hypotheses from the retrieved samples, and validates them by constructing linear probes. We call this method HARP, for Hypothesis-driven Agentic Retrieval and Probing. Despite not involving any training, HARP outperforms both activation oracles and SAE-based agents on concept discovery, concept detection, model steering, and secret elicitation. The training-free design also makes HARP substantially cheaper and more flexible: new datasets can be indexed on demand whenever existing ones prove insufficient. More broadly, our results suggest that current training-based methods do not yet extract insights beyond their training data, and motivate benchmarks that explicitly require interpretability methods to demonstrate such insights. We release our code at https://github.com/SriramB-98/HARP","url_abs":"https://arxiv.org/abs/2607.16448","url_pdf":"https://arxiv.org/pdf/2607.16448","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2607.16448","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2607.16448"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/SriramB-98/HARP","reach":null}],"summary":{"ran":7,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":10,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"b15e6923b944a475","entry":"add_token_marking","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"utils.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b15e6923b944a475"}},{"code_sha256_prefix":"498b1e154de5335d","entry":"default_llm_args","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"decomposers/interpretability_agent.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/decomposers/interpretability_agent.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"498b1e154de5335d"}},{"code_sha256_prefix":"a11fe74e83aead94","entry":"encode_all","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"cache/cache_gender_activations.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/cache/cache_gender_activations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a11fe74e83aead94"}},{"code_sha256_prefix":"768dd23d6f228a93","entry":"fetch_sample","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"cache/pca_streamed.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/cache/pca_streamed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"768dd23d6f228a93"}},{"code_sha256_prefix":"52224354ef38b9ce","entry":"load_skill","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"decomposers/interpretability_agent.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/decomposers/interpretability_agent.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"52224354ef38b9ce"}},{"code_sha256_prefix":"2644e75621175d4f","entry":"run_pca","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"cache/pca_streamed.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/cache/pca_streamed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2644e75621175d4f"}},{"code_sha256_prefix":"91d9152357edf257","entry":"split_by_tokens","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"decomposers/activations_server.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/decomposers/activations_server.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"91d9152357edf257"}},{"code_sha256_prefix":"d516421af7373a4d","entry":"get_common_sae_features","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"utils.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d516421af7373a4d"}},{"code_sha256_prefix":"92d53f6ca6a7da7a","entry":"pad_and_batch","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"decomposers/activations_server.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/decomposers/activations_server.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"92d53f6ca6a7da7a"}},{"code_sha256_prefix":"3607953d164f4df5","entry":"tokenize_and_concatenate","repo":"SriramB-98/HARP","repo_kind":"found_in_text","path":"decomposers/activations_server.py","file_url":"https://github.com/SriramB-98/HARP/blob/HEAD/decomposers/activations_server.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3607953d164f4df5"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}