Home · Docs · Libraries · Folders

Folders

Group documents inside any library. Nested via parent_id, soft-deleted, sharable as a unit. Restricted folders cut permission inheritance for private subtrees.

Folders are the structural layer inside a library. They hold documents and other folders, they can be shared as a unit, and a special restricted type creates a private subtree inside an otherwise shared library.

My Documents

Documents

  • Product specs
  • 2026 Q1
  • Auth rewrite
  • Billing migration
  • 2026 Q2
  • kyoto-trip
  • Sweet release notes

Creating a folder

MethodWhat happens
Click New folder in the sidebar (or the parent folder’s row context menu)A new folder appears at the parent, named “New Folder”, with the name field editable
Right-click in the sidebar → New folderSame behavior

The folder lives in the library you’re currently viewing. Server-side it’s an folders row with a library_id, optional parent_id (for nesting), position (for sort order), and a name.

Renaming

Double-click the folder name in the sidebar, type the new name, press Enter to commit. Empty names fall back to “Untitled Folder.”

Renames are realtime-replicated — open in another tab and the change appears immediately.

Nesting

Folders nest through parent_id. A top-level folder has parent_id = null; a nested folder points at its parent. There’s no hard limit on depth, but the sidebar tree expands visually as you nest, so deep trees can get unwieldy.

To nest an existing folder under another, right-click → Move to… in the sidebar (drag-and-drop reordering is not yet supported for cross-folder moves in v1).

Moving documents into folders

MethodEffect
Right-click a doc → Move to…Opens the folder picker dialog
Drag a doc onto a folder in the sidebarMoves the doc into that folder
Drag a doc onto the library rootMoves the doc out of any folder

The move updates the document’s folder_id (and library_id if cross-library). Same-library moves are instant; cross-library moves go through a server-side container-consistency check.

Restricted folders

A folder can be marked restricted (a server-side flag on the folders row). The effect: permission inheritance stops at the restricted folder. See Permissions for the resolution algorithm.

In practice: imagine a library that’s shared with the whole team. Inside it, you have a folder of compensation reviews that should be private to a few people. Mark that folder restricted, then grant only those people access on the folder. Even though the rest of the library is shared, that folder isn’t.

The restricted flag isn’t toggled from the share dialog — it’s set when the folder is created (or via the database directly). Future versions may expose it in the UI.

Deleting

ActionEffect
Right-click → Delete on an empty folderSoft-deletes; lands in your Recycling Bin
Right-click → Delete on a non-empty folderThe sidebar blocks this — empty the folder first

When you do delete a folder (empty or not via the bin’s path), all its descendants are soft-deleted together. Restoring the parent folder restores the whole subtree.

Sharing a folder

Open a folder’s share dialog (right-click → Share in the sidebar, or from the folder’s URL). Folders only have the People tab — no public link.

Sharing a folder cascades:

This is the simplest way to give a team standing access to a body of work.

Folder URLs

Folders themselves don’t open as a page in v1 — there’s no /app/folder/:id route. The sidebar is the canonical folder browser. The /app/browse route shows a folder-tree view when you want a fuller browser view.

What folders are not

NotWhy
A way to grant less access than the libraryThe resolver uses highest ACL across the chain. A folder grant can be higher than the library’s, never lower. To restrict, use the restricted flag.
A version-control conceptFolders don’t snapshot; documents do. See Version history.
RequiredDocuments can live at the library root with folder_id = null.
Sharable as a public linkPublic links are document-only.