This release introduces major new features including Buckets (xet-based large scale object storage), CLI Extensions, Space Hot-Reload, and significant improvements for AI coding agents. The CLI has been completely overhauled with centralized error handling, better help output, and new commands for collections, papers, and more.
🪣 Buckets: S3-like Object Storage on the Hub
Buckets provide S3-like object storage on Hugging Face, powered by the Xet storage backend. Unlike repositories (which are git-based and track file history), buckets are remote object storage containers designed for large-scale files with content-addressable deduplication. Use them for training checkpoints, logs, intermediate artifacts, or any large collection of files that doesn't need version control.
# Create a bucket
hf buckets create my-bucket --private
# Upload a directory
hf buckets sync ./data hf://buckets/username/my-bucket
# Download from bucket
hf buckets sync hf://buckets/username/my-bucket ./data
# List files
hf buckets list username/my-bucket -R --treeThe Buckets API includes full CLI and Python support for creating, listing, moving, and deleting buckets; uploading, downloading, and syncing files; and managing bucket contents with include/exclude patterns.
- Buckets API and CLI by @Wauplin in #3673
- Support bucket rename/move in API + CLI by @Wauplin in #3843
- Add 'sync_bucket' to HfApi by @Wauplin in #3845
- hf buckets file deletion by @Wauplin in #3849
- Update message when no buckets found by @Wauplin in #3850
- Buckets doc
hfinstall by @julien-c in #3846
📚 Documentation: Buckets guide
🤖 AI Agent Support
This release includes several features designed to improve the experience for AI coding agents (Claude Code, OpenCode, Cursor, etc.):
- Centralized CLI error handling: Clean user-facing messages without tracebacks (set
HF_DEBUG=1for full traces) by @hanouticelina in #3754 - Token-efficient skill: The
hf skills addcommand now installs a compact skill (~1.2k tokens vs ~12k before) by @hanouticelina in #3802 - Agent-friendly
hf jobs logs: Prints available logs and exits by default; use-fto stream by @davanstrien in #3783 - Add AGENTS.md: Dev setup and codebase guide for AI agents by @Wauplin in #3789
# Install the hf-cli skill for Claude
hf skills add --claude
# Install for project-level
hf skills add --project- Add
hf skills addCLI command by @julien-c in #3741 hf skills addinstalls to central location with symlinks by @hanouticelina in #3755- Add Cursor skills support by @NielsRogge in #3810
🔥 Space Hot-Reload (Experimental)
Hot-reload Python files in a Space without a full rebuild and restart. This is useful for rapid iteration on Gradio apps.
# Open an interactive editor to modify a remote file
hf spaces hot-reload username/repo-name app.py
# Take local version and patch remote
hf spaces hot-reload username/repo-name -f app.py- feat(spaces): hot-reload by @cbensimon in #3776
- fix hot reload reference part.2 by @cbensimon in #3820
🖥️ CLI Improvements
New Commands
- Add
hf papers lsto list daily papers on the Hub by @julien-c in #3723 - Add
hf collectionscommands (ls, info, create, update, delete, add-item, update-item, delete-item) by @Wauplin in #3767
CLI Extensions
Introduce an extension mechanism to the hf CLI. Extensions are standalone executables hosted in GitHub repositories that users can install, run, and remove with simple commands. Inspired by gh extension.
# Install an extension (defaults to huggingface org)
hf extensions install hf-claude
# Install from any GitHub owner
hf extensions install hanouticelina/hf-claude
# Run an extension
hf claude
# List installed extensions
hf extensions list- Add
hf extensionby @hanouticelina in #3805 - Add
hf extalias by @hanouticelina in #3836
Output Format Options
- Add
--format {table,json}and-q/--quiettohf models ls,hf datasets ls,hf spaces ls,hf endpoints lsby @hanouticelina in #3735 - Align
hf jobs psoutput with standard CLI pattern by @davanstrien in #3799 - Dynamic table columns based on
--expandfield by @hanouticelina in #3760
Usability
- Improve
hfCLI help output with examples and documentation links by @hanouticelina in #3743 - Add
-has short alias for--helpby @assafvayner in #3800 - Add hidden
--versionflag by @Wauplin in #3784 - Add
--typeas alias for--repo-typeby @Wauplin in #3835 - Better handling of aliases in documentation by @Wauplin in #3840
- Print first example only in group command --help by @Wauplin in #3841
- Subfolder download:
hf download repo_id subfolder/now works as expected by @Wauplin in #3822
Jobs CLI
List available hardware:
✗ hf jobs hardware
NAME PRETTY NAME CPU RAM ACCELERATOR COST/MIN COST/HOUR
--------------- ---------------------- -------- ------- ----------------- -------- ---------
cpu-basic CPU Basic 2 vCPU 16 GB N/A $0.0002 $0.01
cpu-upgrade CPU Upgrade 8 vCPU 32 GB N/A $0.0005 $0.03
cpu-performance CPU Performance 32 vCPU 256 GB N/A $0.3117 $18.70
cpu-xl CPU XL 16 vCPU 124 GB N/A $0.0167 $1.00
t4-small Nvidia T4 - small 4 vCPU 15 GB 1x T4 (16 GB) $0.0067 $0.40
t4-medium Nvidia T4 - medium 8 vCPU 30 GB 1x T4 (16 GB) $0.0100 $0.60
a10g-small Nvidia A10G - small 4 vCPU 15 GB 1x A10G (24 GB) $0.0167 $1.00
...Also added a ton of fixes and small QoL improvements.
- Support multi GPU training commands (
torchrun,accelerate launch) by @lhoestq in #3674 - Pass local script and config files to job by @lhoestq in #3724
- List available hardware with
hf jobs hardwareby @Wauplin in #3693 - Better jobs filtering in CLI: labels and negation (
!=) by @lhoestq in #3742 - Accept namespace/job_id format in jobs CLI commands by @davanstrien in #3811
- Pass namespace parameter to fetch job logs by @Praful932 in #3736
- Add more error handling output to hf jobs cli commands by @davanstrien in #3744
- Fix
hf jobscommands crashing without a TTY by @davanstrien in #3782
🤖 Inference
- Add
dimensions&encoding_formatparameter to InferenceClient for output embedding size by @mishig25 in #3671 - feat: zai-org provider supports text to image by @tomsun28 in #3675
- Fix fal image urls payload by @hanouticelina in #3746
- Fix Replicate
image-to-imagecompatibility with different model schemas by @hanouticelina in #3749 - Accelerator parameter support for inference endpoints by @Wauplin in #3817
🔧 Other QoL Improvements
- Support setting Label in Jobs API by @Wauplin in #3719
- Document built-in environment variables in Jobs docs (JOB_ID, ACCELERATOR, CPU_CORES, MEMORY) by @Wauplin in #3834
- Fix ReadTimeout crash in no-follow job logs by @davanstrien in #3793
- Add evaluation results module (
EvalResultEntry,parse_eval_result_entries) by @hanouticelina in #3633 - Add source org field to
EvalResultEntryby @hanouticelina in #3694 - Add limit param to list_papers API method by @Wauplin in #3697
- Add
num_papersfield to Organization class by @cfahlgren1 in #3695 - Update MAX_FILE_SIZE_GB from 50 to 200 by @davanstrien in #3696
- List datasets benchmark alias (
benchmark=True→benchmark="official") by @Wauplin in #3734 - Add notes field to
EvalResultEntryby @Wauplin in #3738 - Make
task_idrequired inEvalResultEntryby @Wauplin in #3718 - Repo commit count warning for
upload_large_folderby @Wauplin in #3698 - Replace deprecated is_enterprise boolean by
planstring in org info by @Wauplin in #3753 - Update hardware list in SpaceHardware enum by @lhoestq in #3756
- Use HF_HUB_DOWNLOAD_TIMEOUT as default httpx timeout by @Wauplin in #3751
- No timeout by default when using httpx by @Wauplin in #3790
- Log 'x-amz-cf-id' on http error (if no request id) by @Wauplin in #3759
- Parse xet hash from tree listing by @seanses in #3780
- Require filelock>=3.10.0 for
mode=parameter support by @Wauplin in #3785 - Add overload decorators to
HfApi.snapshot_downloadfor dry_run typing by @Wauplin in #3788 - Dataclass doesn't call original
__init__by @zucchini-nlp in #3818 - Strict dataclass sequence validation by @Wauplin in #3819
- Check if
dataclass.repr=Truebefore wrapping by @zucchini-nlp in #3823
💔 Breaking Changes
hf jobs psremoves old Go-template--format '{{.id}}'syntax. Use-qfor IDs or--format json | jqfor custom extraction by @davanstrien in #3799- Migrate to
hf reposinstead ofhf repo(old command still works but shows deprecation warning) by @Wauplin in #3848 - Migrate
hf repo-files deletetohf repo delete-files(old command hidden from help, shows deprecation warning) by @Wauplin in #3821
🐛 Bug and typo fixes
- Fix severe performance regression in streaming by keeping a byte iterator in HfFileSystemStreamFile by @leq6c in #3685
- Fix endpoint not forwarded in CommitUrl by @Wauplin in #3679
- Fix
HfFileSystem.resolve_path()with special char@by @lhoestq in #3704 - Fix cache verify incorrectly reporting folders as missing files by @Mitix-EPI in #3707
- Fix multi user cache lock permissions by @hanouticelina in #3714
- Default _endpoint to None in CommitInfo, fixes tiny regression from v1.3.3 by @tomaarsen in #3737
- Filter datasets by benchmark:official by @Wauplin in #3761
- Fix file corruption when server ignores Range header on download retry by @XciD in #3778
- Fix Xet token invalid on repo recreation by @Wauplin in #3847
- Correct typo 'occured' to 'occurred' by @thecaptain789 in #3787
- Fix typo in CLI error handling by @hanouticelina in #3757
📖 Documentation
- Add link to Hub Jobs documentation by @gary149 in #3712
- Update HTTP backend configuration link to main branch by @IliasAarab in #3713
- Update CLI help output in docs to include new commands by @julien-c in #3722
- Wildcard pattern documentation by @hanouticelina in #3710
- Deprecate
hf_transferreferences in Korean and German translations by @davanstrien in #3804 - Use SPDX license identifier 'Apache-2.0' by @yesudeep in #3814
- Correct img tag style in README.md by @sadnesslovefreedom-debug in #3689
🏗️ Internal
- Change external dependency from
typer-slimtotyperby @svlandeg in #3797 - Remove
shellinghamfrom the required dependencies by @hanouticelina in #3798 - Ignore
unused-ignore-commentwarnings intyformypycompatibility by @hanouticelina in #3691 - Remove new
unused-type-ignore-commentwarning fromtyby @hanouticelina in #3803 - Fix curlify when debug logging is enabled for streaming requests by @hanouticelina in #3692
- Remove canonical dataset test case by @hanouticelina in #3740
- Remove broad exception handling from CLI job commands by @hanouticelina in #3748
- CI windows permission error by @Wauplin in #3700
- Upgrade GitHub Actions to latest versions by @salmanmkc in #3729
- Stabilize lockfile test in
file_downloadtests by @hanouticelina in #3815 - Fix ty invalid assignment in
CollectionItemby @hanouticelina in #3831 - Use
inference_providerinstead ofinferencein tests by @hanouticelina in #3826 - Fix tqdm windows test failure by @Wauplin in #3844
- Add test for check if dataclass.repr=True before wrapping by @Wauplin in #3852
- Prepare for v1.5 by @Wauplin in #3781