folder
cmdhub adapter

Microsoft OneDrive CLI
for cmdhub.

OneDrive files, folders, metadata, trash, and sharing permissions through Microsoft Graph.

lock Auth: OAuth2
Quick Install cmdhub get msdrive

data_object Agent Contract

Agents should start with auth/status and discovery commands, inspect schemas before composition, and treat commands marked as mutating as state-changing operations.

Output

Use human output for reading, `--json` for one object, and `--jsonl` for pipes.

Auth

Microsoft OAuth. Used for OneDrive files, folders, and permissions.

Refs

Prefer list/search, then short refs or piped JSONL. Use `resolve` to inspect cached refs.

Schemas

Use `msdrive schema` and `catalog.json` to inspect fields, flags, examples, and side effects.

Auth scopes

offline_accessUser.ReadFiles.ReadWrite

terminal Command Reference

Generated from source. Global flags apply to all commands.

Global Flags

--json bool Emit JSON machine output
--jsonl bool Emit JSONL records for piping
--output, -o string Compatibility output mode: json|jsonl. Prefer --json or --jsonl
--view string = summary View mode: summary|full
--profile string = default Config/auth profile
--config string Config path override
--quiet, -q bool Suppress non-essential diagnostics
--debug bool Enable debug diagnostics
--limit int = 50 Maximum items to emit
--page-size int = 50 Requested upstream page size
--cursor string Continuation cursor
--no-paginate bool Fetch only one page
--version, -v bool Print version information
msdrive auth Manage Microsoft OneDrive authentication
#cmd-msdrive-auth discovery safe
msdrive auth login Authenticate with Microsoft OneDrive
#cmd-msdrive-auth-login mutates state
$ msdrive auth login
$ msdrive auth login --help
$ msdrive auth status
msdrive auth logout Remove stored credentials
#cmd-msdrive-auth-logout mutates state
$ msdrive auth login
$ msdrive auth logout
$ msdrive auth logout --help
msdrive auth refresh Refresh stored token
#cmd-msdrive-auth-refresh mutates state
$ msdrive auth refresh
$ msdrive auth refresh --help
msdrive auth status Show auth status
#cmd-msdrive-auth-status discovery safe
$ msdrive auth status
$ msdrive auth status --help
msdrive auth whoami Show current OneDrive identity
#cmd-msdrive-auth-whoami discovery safe
$ msdrive auth whoami
$ msdrive auth whoami --help
msdrive capabilities Describe capabilities
#cmd-msdrive-capabilities discovery safe
$ msdrive capabilities --help
msdrive config Inspect local configuration
#cmd-msdrive-config discovery safe
msdrive config explain Explain resolved configuration
#cmd-msdrive-config-explain discovery safe
$ msdrive config explain --help
msdrive doctor Run msdrive diagnostics
#cmd-msdrive-doctor discovery safe
$ msdrive doctor --help
msdrive file Manage OneDrive files
#cmd-msdrive-file discovery safe
msdrive file delete Permanently delete a file
#cmd-msdrive-file-delete mutates state
--all bool Confirm batch permanent deletion
--file string File selector
--yes bool Confirm permanent deletion
$ msdrive file delete --all --yes f1 f2
$ msdrive file delete --help
$ msdrive file delete f1 --yes
$ msdrive file trash f1
msdrive file download Download file bytes
#cmd-msdrive-file-download discovery safe
--file string File selector
--out string Output path. Omit to print content.
$ msdrive file download
$ msdrive file download --file f1
$ msdrive file download f1 --out ./notes.txt
msdrive file export Export a Microsoft Office file
#cmd-msdrive-file-export discovery safe
--file string File selector
--mime-type string = pdf Export format or MIME type
--out string Output path. Omit to print content.
$ msdrive file export
$ msdrive file export f1 --mime-type pdf --out ./file.pdf
$ msdrive file export f1 --out ./file.pdf
msdrive file get Get file metadata
#cmd-msdrive-file-get discovery safe
--file string File selector
$ msdrive file get
$ msdrive file get f1
$ msdrive file get f1 f2
$ msdrive file search --query notes --limit 1 --jsonl | msdrive file get
msdrive file list List files
#cmd-msdrive-file-list discovery safe
--folder string Folder selector
--query string Name/full-text query
--trashed bool Include trashed files
$ msdrive file list
$ msdrive file list --folder d1
$ msdrive file list --folder d1 --query notes
$ msdrive file list --limit 10
$ msdrive folder list --limit 1 --jsonl | msdrive file list
msdrive file trash Move a file to trash
#cmd-msdrive-file-trash mutates state
--all bool Confirm batch trash
--file string File selector
$ msdrive file search --query notes --jsonl | msdrive file trash --all
$ msdrive file trash --all f1 f2
$ msdrive file trash --help
$ msdrive file trash f1
msdrive file untrash Restore a file from trash
#cmd-msdrive-file-untrash mutates state
--all bool Confirm batch untrash
--file string File selector
$ msdrive file search --query notes --trashed --jsonl | msdrive file untrash --all
$ msdrive file untrash --all f1 f2
$ msdrive file untrash --help
$ msdrive file untrash f1
msdrive file update Update file metadata or parents
#cmd-msdrive-file-update mutates state
--add-parent stringSlice = [] Folder selector to add as parent
--description string New description
--file string File selector
--name string New file name
--remove-parent stringSlice = [] Folder selector to remove as parent
--starred bool Set starred
$ msdrive file update --help
$ msdrive file update f1 --add-parent d2
$ msdrive file update f1 --add-parent d2 --remove-parent d1
$ msdrive file update f1 --description "Project notes"
$ msdrive file update f1 --name renamed.txt
msdrive file upload Upload a local file
#cmd-msdrive-file-upload mutates state
--description string File description
--folder string Parent folder selector
--mime-type string Content MIME type
--name string OneDrive file name
--path string Local file path
$ msdrive file upload --help
$ msdrive file upload --path ./notes.txt --folder d1 --name notes.txt
$ msdrive folder search --query "Project docs" --jsonl | msdrive file upload --path ./notes.txt
msdrive folder Manage OneDrive folders
#cmd-msdrive-folder discovery safe
msdrive folder create Create a folder
#cmd-msdrive-folder-create mutates state
--description string Folder description
--name string Folder name
--parent string Parent folder selector
$ msdrive folder create --help
$ msdrive folder create --name "Project docs"
$ msdrive folder create --parent d1 --name "Notes"
msdrive folder get Get folder metadata
#cmd-msdrive-folder-get discovery safe
$ msdrive folder get
$ msdrive folder get d1
$ msdrive folder get d1 d2
$ msdrive folder list --limit 1 --jsonl | msdrive folder get
msdrive folder list List folders
#cmd-msdrive-folder-list discovery safe
--query string Folder name query
--trashed bool Include trashed folders
$ msdrive folder list
$ msdrive folder list --limit 10
$ msdrive folder list --query "Project docs"
msdrive login Authenticate with Microsoft OneDrive
#cmd-msdrive-login mutates state
$ msdrive auth status
$ msdrive login
msdrive logout Remove stored credentials
#cmd-msdrive-logout mutates state
$ msdrive auth login
$ msdrive logout
msdrive permission Manage OneDrive permissions
#cmd-msdrive-permission discovery safe
msdrive permission add Add a permission
#cmd-msdrive-permission-add mutates state
--allow-discovery bool Allow public/domain discovery
--domain string Domain for domain permission
--email string Email address for user/group permission
--file string File selector
--role string = reader Permission role: reader|commenter|writer
--type string = anyone Permission type: user|group|domain|anyone
--yes bool Confirm broad anyone/domain sharing
$ msdrive permission add --file f1 --type anyone --role reader --yes
$ msdrive permission add --file f1 --type user --email person@example.com --role reader
$ msdrive permission add --help
msdrive permission list List file permissions
#cmd-msdrive-permission-list discovery safe
--file string File selector
$ msdrive file search --query notes --limit 1 --jsonl | msdrive permission list
$ msdrive permission list
$ msdrive permission list --file f1
msdrive permission remove Remove a permission
#cmd-msdrive-permission-remove mutates state
--all bool Confirm batch permission removal
--file string File selector
--permission string Permission selector
--yes bool Confirm permission removal
$ msdrive permission remove --file f1 --permission r1
$ msdrive permission remove --file f1 r1
$ msdrive permission remove --help
msdrive profile Manage provider profiles
#cmd-msdrive-profile discovery safe
msdrive profile create Create an unauthenticated provider profile
#cmd-msdrive-profile-create mutates state
$ msdrive profile create --help
msdrive profile delete Delete a local provider profile
#cmd-msdrive-profile-delete mutates state
$ msdrive profile delete --help
msdrive profile list List provider profiles
#cmd-msdrive-profile-list discovery safe
$ msdrive profile list --help
msdrive profile rename Rename a local provider profile
#cmd-msdrive-profile-rename discovery safe
$ msdrive profile rename --help
msdrive profile use Set the default provider profile
#cmd-msdrive-profile-use mutates state
$ msdrive profile use --help
msdrive resolve Resolve a marker or short id
#cmd-msdrive-resolve discovery safe
$ msdrive resolve --help
msdrive schema Emit msdrive schema hints
#cmd-msdrive-schema discovery safe
--in bool Show input schema
--input bool Show input schema
--out bool Show output schema
$ msdrive schema
$ msdrive schema --help
$ msdrive schema file upload --in --json
$ msdrive schema file.upload --input --json
$ msdrive schema file.upload --out --json
msdrive version Show msdrive version information
#cmd-msdrive-version discovery safe
$ msdrive version --help

play_circle Live Examples

Output captured from a real workspace. Regenerate with scripts/gen-docs.sh --update.

auth

Check current OneDrive identity
$ msdrive auth whoami
Authenticated as kestrelphilip@outlook.com

Next steps:
- Files:        msdrive file list --limit 10
- Folders:      msdrive folder list --limit 10
- Capabilities: msdrive capabilities

files

List recent files
$ msdrive file list --limit 5
REF  TITLE                                                         WHEN
f1   Documents                                                     Wed 29 Apr 05:31
f2   OneDrive Eval Folder {id}  Wed 29 Apr 05:59
f3   OneDrive Eval Folder {id}  Wed 29 Apr 06:00
f4   OneDrive Eval Folder {id}  Wed 29 Apr 06:50
f5   OneDrive Eval Folder {id}  Wed 29 Apr 07:06

Next steps:
- More:   msdrive file list --cursor https://graph.microsoft.com/v1.0/me/drive/root/children?$select=id%2cname%2cdescription%2csize%2ccreatedDateTime%{id}%2cwebUrl%2c%40microsoft.graph.downloadUrl%2cparentReference%2cfile%2cfolder%2cdeleted%2cshared%2ccreatedBy&$top=5&$skiptoken={id}
- Open:   msdrive file get f1
- Search: msdrive file search --query <text>
- Files:  msdrive file list --limit 10
Search files
$ msdrive file search --query eval --limit 5
REF  TITLE                                                         WHEN
f1   OneDrive Eval Folder {id}  Sun 17 May 14:09
f2   OneDrive Eval Folder {id}  Sun 03 May 08:37
f3   OneDrive Eval Folder {id}  Wed 29 Apr 19:12
f4   OneDrive Eval Folder {id}  Thu 30 Apr 12:00
f5   OneDrive Eval Folder {id}  Thu 30 Apr 12:29

Next steps:
- More:   msdrive file list --cursor https://graph.microsoft.com/v1.0/me/drive/root/search(q='eval')?$select=id%2cname%2cdescription%2csize%2ccreatedDateTime%{id}%2cwebUrl%2c%40microsoft.graph.downloadUrl%2cparentReference%2cfile%2cfolder%2cdeleted%2cshared%2ccreatedBy&$top=5&$skiptoken=Ng
- Open:   msdrive file get f1
- Search: msdrive file search --query <text>
- Files:  msdrive file list --limit 10

folders

List folders
$ msdrive folder list --limit 5
REF  TITLE                                                         WHEN
d1   Documents                                                     Wed 29 Apr 05:31
d2   OneDrive Eval Folder {id}  Wed 29 Apr 05:59
d3   OneDrive Eval Folder {id}  Wed 29 Apr 06:00
d4   OneDrive Eval Folder {id}  Wed 29 Apr 06:50
d5   OneDrive Eval Folder {id}  Wed 29 Apr 07:06

Next steps:
- More:   msdrive folder list --cursor https://graph.microsoft.com/v1.0/me/drive/root/children?$select=id%2cname%2cdescription%2csize%2ccreatedDateTime%{id}%2cwebUrl%2c%40microsoft.graph.downloadUrl%2cparentReference%2cfile%2cfolder%2cdeleted%2cshared%2ccreatedBy&$top=5&$skiptoken={id}
- Open:   msdrive folder get d1
- Search: msdrive folder search --query <text>
- Files:  msdrive file list --limit 10

alt_route Composition Patterns

Bridge your ecosystem with zero middleware.

msdrive auth login

# Search for a file, inspect metadata, then list its sharing permissions
msdrive file search --query "project notes" --limit 1 --jsonl \
  | msdrive file get

msdrive permission list --file f1

# Upload into a folder discovered from a pipe
msdrive folder search --query "Project docs" --limit 1 --jsonl \
  | msdrive file upload --path ./notes.txt --name notes.txt