What happens
Approving an hf_push permission prompt raises ImportError instead of pushing.
Cause
lqh/agent.py:1922 imports a function that no longer exists:
from lqh.tools.handlers import _execute_hf_push, _get_hf_api, _validate_path
handlers.py defines _execute_hf_push_dataset (line 4132) and _execute_hf_push_model (line 4281). Plain _execute_hf_push is gone. Commit 1594e14 (2026-05-19, "auto-detect dataset vs model") split it and missed this call site. grep -rn "_execute_hf_push\b" matches only agent.py:1922 and the call at agent.py:1936.
$ python -c "from lqh.tools.handlers import _execute_hf_push"
ImportError: cannot import name '_execute_hf_push' from 'lqh.tools.handlers'
Why it is reachable
handle_hf_push returns PERMISSION_REQUIRED when the repo is not already approved. The answer routes through _handle_permission_response (agent.py:1808) to _handle_hf_push_permission (agent.py:1900), which hits the bad import.
So it only affects the permission path, which is the first push to a given repo. Once permission is granted, handle_hf_push runs directly and works. New users hit it every time.
Note
The two replacement functions take different arguments than the old one, so this is more than a rename. The call site needs to detect dataset vs model and dispatch accordingly, which is why I am filing rather than sending a patch. Happy to turn it into a prompt if that is useful.
What happens
Approving an
hf_pushpermission prompt raisesImportErrorinstead of pushing.Cause
lqh/agent.py:1922imports a function that no longer exists:handlers.pydefines_execute_hf_push_dataset(line 4132) and_execute_hf_push_model(line 4281). Plain_execute_hf_pushis gone. Commit 1594e14 (2026-05-19, "auto-detect dataset vs model") split it and missed this call site.grep -rn "_execute_hf_push\b"matches only agent.py:1922 and the call at agent.py:1936.Why it is reachable
handle_hf_pushreturnsPERMISSION_REQUIREDwhen the repo is not already approved. The answer routes through_handle_permission_response(agent.py:1808) to_handle_hf_push_permission(agent.py:1900), which hits the bad import.So it only affects the permission path, which is the first push to a given repo. Once permission is granted,
handle_hf_pushruns directly and works. New users hit it every time.Note
The two replacement functions take different arguments than the old one, so this is more than a rename. The call site needs to detect dataset vs model and dispatch accordingly, which is why I am filing rather than sending a patch. Happy to turn it into a prompt if that is useful.