{"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-2509-23124","title":"Non-Collaborative User Simulators for Tool Agents","arxiv_id":"2509.23124","date":"2025-09-27","proceeding":"ICLR","authors":["Jeonghoon Shim","Woojung Song","Cheyon Jin","Seungwon KooK","Yohan Jo"],"abstract":"Tool agents interact with users through multi-turn dialogues to accomplish various tasks. Recent studies have adopted user simulation methods to develop these agents in multi-turn settings. However, existing user simulators tend to be agent-friendly, exhibiting only cooperative behaviors, failing to train and test agents against non-collaborative users in the real world. We propose a novel user simulator architecture that simulates four categories of non-collaborative behaviors: requesting unavailable services, digressing into tangential conversations, expressing impatience, and providing incomplete utterances. Our user simulator can simulate challenging and natural non-collaborative behaviors while reliably delivering all intents and information necessary to accomplish the task. Our experiments on MultiWOZ and τ-bench reveal significant performance degradation in state-of-the-art tool agents when encountering non-collaborative users, as well as agent weaknesses under each non-collaborative condition such as escalated hallucinations and dialogue breakdowns. Our findings point to the need for methods that can improve agent robustness to the wide range of user behaviors encountered in deployment. We release the extensible simulation framework to help the community develop and stress-test tool agents under realistic conditions within their own service domains. Our code is available at https://github.com/holi-lab/NCUser.","url_abs":"https://arxiv.org/abs/2509.23124","url_pdf":"https://arxiv.org/pdf/2509.23124","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=2509.23124","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.23124"}},"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/holi-lab/NCUser","reach":null}],"summary":{"ran_honours":1,"ran_draft_wrong":2,"ran_violates":1,"unverified":15},"by_repo_kind":{"found_in_text":{"samples":19,"ran":4,"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":"25a35d8336e9e465","entry":"dialogue_state_tracker","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"25a35d8336e9e465"}},{"code_sha256_prefix":"133b1c71fcfe42a2","entry":"fragment_examples","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"133b1c71fcfe42a2"}},{"code_sha256_prefix":"51881f175898fee0","entry":"gpt_apply_chat_template","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"51881f175898fee0"}},{"code_sha256_prefix":"1712295966b220b4","entry":"is_apology","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1712295966b220b4"}},{"code_sha256_prefix":"20dbe45ff880c9f6","entry":"MultiwozUser","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"20dbe45ff880c9f6"}},{"code_sha256_prefix":"fc138d42517513f1","entry":"emotional_delay","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"fc138d42517513f1"}},{"code_sha256_prefix":"907332340034c6b6","entry":"emotional_fail","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"907332340034c6b6"}},{"code_sha256_prefix":"786d4a917628c6e9","entry":"gpt_function_call","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"786d4a917628c6e9"}},{"code_sha256_prefix":"9979deba676dec40","entry":"gpt_infer","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"9979deba676dec40"}},{"code_sha256_prefix":"56d46ff719f3551e","entry":"is_ending","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"56d46ff719f3551e"}},{"code_sha256_prefix":"df9423ee6398e51f","entry":"rest_provider","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"df9423ee6398e51f"}},{"code_sha256_prefix":"f9da9c635fecb3dd","entry":"rewrite_with_cynical_tone","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"f9da9c635fecb3dd"}},{"code_sha256_prefix":"696f7000c0416ab0","entry":"style_transfer","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"696f7000c0416ab0"}},{"code_sha256_prefix":"2284d14597b0724b","entry":"system_action_classifier","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"2284d14597b0724b"}},{"code_sha256_prefix":"63bd0f7e20fcf640","entry":"tangential_complain_generator","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"63bd0f7e20fcf640"}},{"code_sha256_prefix":"39fd33c735d33da9","entry":"tangential_merge","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"39fd33c735d33da9"}},{"code_sha256_prefix":"3614754a17e3f5f9","entry":"tangential_respond_verifier","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"3614754a17e3f5f9"}},{"code_sha256_prefix":"a6a7007fc5675d3f","entry":"tangential_scenario_generator","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"a6a7007fc5675d3f"}},{"code_sha256_prefix":"0c0caaae5624d445","entry":"unavailable_service_generator","repo":"holi-lab/NCUser","repo_kind":"found_in_text","path":"multiwoz_env/multiwoz_user.py","file_url":"https://github.com/holi-lab/NCUser/blob/HEAD/multiwoz_env/multiwoz_user.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":"0c0caaae5624d445"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_api"},"syntology_extracted_results":null}