{"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-2606-27683","title":"CBD: API-Only LLM Black-Box Unlearning through Controlled Behavioral Divergence","arxiv_id":"2606.27683","date":"2026-06-26","proceeding":null,"authors":["Zhiqiang Xie","Yijing Lin","Zhipeng Gao","Dong In Kim"],"abstract":"Edge devices increasingly invoke large language models (LLMs) through API services for context aware edge intelligence, while edge generated data may be collected to improve LLMs and may introduce sensitive, copyrighted, harmful, or outdated information into model behavior. Machine unlearning offers a practical way to remove the influence of undesired data without retraining LLMs. However, existing methods still face two gaps. The first is API only black box access, where target model parameters and internal logits are unavailable. The second is how to preserve retained utility when unlearning target data and retained data share highly similar prompt structures or semantic patterns. To address these challenges, we propose Controlled Behavioral Divergence (CBD), an API only black box unlearning framework. CBD uses two auxiliary models to create controlled behavioral divergence between retained inputs and unlearning target inputs, converts this divergence into an unlearning relevance score, and routes unlearning related prompts away from the target LLM. To improve discrimination accuracy under high similarity between target and retained data, CBD constructs a gradient statistics based discriminative basis by estimating empirical Fisher matrices and solving a regularized generalized eigenvalue problem, guiding the unlearning signal toward target specific information rather than shared prompt structures. Compared with eleven white box and gray box unlearning baselines, CBD achieves a better unlearning utility trade off and its performance varies little across settings. On ToFU forget10, CBD approaches the retrained reference on the forget set while raising model utility to 74.90, about 15% above the second best baseline. On WMDP, it lowers hazardous knowledge accuracy to 25.68, near random guessing, while preserving MMLU accuracy of 52.67. Code is at https://github.com/DGL-codes/CBD.","url_abs":"https://arxiv.org/abs/2606.27683","url_pdf":"https://arxiv.org/pdf/2606.27683","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":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2606.27683","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2606.27683"}},"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/DGL-codes/CBD","reach":null}],"summary":{"ran":9,"ran_violates":1,"unverified":1},"by_repo_kind":{"found_in_text":{"samples":11,"ran":10,"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":"5540d0278fb0fa50","entry":"NextTokenPredictionLoss","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/forget_losses.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/forget_losses.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":"5540d0278fb0fa50"}},{"code_sha256_prefix":"d6b3161f4ab3c45c","entry":"TokenNextTokenPredictionLoss","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/forget_losses.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/forget_losses.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":"d6b3161f4ab3c45c"}},{"code_sha256_prefix":"cdd171f20cd6f53d","entry":"collate_fn","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/tofuutil/data_module.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/tofuutil/data_module.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":"cdd171f20cd6f53d"}},{"code_sha256_prefix":"a79e6d8f123f14b9","entry":"copy_weights","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/utils.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/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":"a79e6d8f123f14b9"}},{"code_sha256_prefix":"5985b70afc6ef2b0","entry":"custom_data_collator","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/tofuutil/data_module.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/tofuutil/data_module.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":"5985b70afc6ef2b0"}},{"code_sha256_prefix":"ebb85bc96e7f493f","entry":"find_all_linear_names","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/peft_util.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/peft_util.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":"ebb85bc96e7f493f"}},{"code_sha256_prefix":"dcd205afff8c60a9","entry":"find_unfilled_paths","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/utils.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/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":"dcd205afff8c60a9"}},{"code_sha256_prefix":"44dd25d964127b38","entry":"get_batch_loss","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/tofuutil/data_module.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/tofuutil/data_module.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"44dd25d964127b38"}},{"code_sha256_prefix":"c2cfa4061fa42997","entry":"get_dtype","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/utils.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/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":"c2cfa4061fa42997"}},{"code_sha256_prefix":"e14060d857db75be","entry":"split_forget_retain","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/forget_losses.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/forget_losses.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":"e14060d857db75be"}},{"code_sha256_prefix":"0d15ec94f3135db3","entry":"init_small_llm","repo":"DGL-codes/CBD","repo_kind":"found_in_text","path":"uld/model/utils.py","file_url":"https://github.com/DGL-codes/CBD/blob/HEAD/uld/model/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":"0d15ec94f3135db3"}}]},"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":{"kind":"leaderboard_placements","source":"Syntology's leaderboard-shaped extractor over the paper's own arXiv-HTML tables: a model pointed at a cell, the number was read from that cell and checked against the board's metric, dataset, split and scale, and an independent check accepted the entry; not reviewed by the paper's authors or the archive's editors","extractor_model":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","verifier_model":null,"prompt_sha":"fa63d4bb9d755694","coverage":{"sentence":"Syntology has checked 6,795 of the 9,581 papers on this site that are newer than the archive; results from the others appear after they are checked.","papers_newer_than_archive":9581,"papers_checked":6795},"entries":[],"not_placed":{"boards":1,"rejected_by_independent_check":0,"refused_by_a_rule":1,"check_did_not_answer":0,"proposed_without_a_cell":0,"declined_by_site":0}}}