Concept · files
Use when
You add, find, read, replace or remove a document, or bring in a web page. A person may also give you a newer copy of one.
Looking for something else?
A Markdown note you write and edit often (card Document). A named group of Files (card Collection). A folder kept current from a source (card Synced folder).
For
A File keeps one document and all of its versions. A new edition is a new version of the same File, not a new File. The current version is the one that search and extraction read. Older versions stay readable by their version ID. Adding or replacing a File does not change the Graph. An entity cites the exact version it was read from, so it keeps citing the old edition after a replace. To bring the Graph up to date, find the entities that cite the File, extract from the new version, and review the result (recipe new-edition). Penumbra writes a few Files itself, from other information, and keeps them up to date. These Files read like other Files. Penumbra refuses to extract from one or cite one, withfile_not_evidence. It refuses a direct edit with
file_write_constrained, the code that a synced File also gives (card
source). The refusal for a File that Penumbra writes says to suggest a change.
A File moves through three steps before you can use it. The version is stored,
then it is searchable by words, then it is searchable by meaning. Passages come
from the text of the current version (card Passage and citation).
Use when
- You bring a document into the project.
- You bring a web page, or the pages of a website, into the project.
- You need the text, the pages or the versions of a document.
- A person gives you a newer copy of a document the project already holds.
- You must set the date a document states about itself.
- You must trash a document or bring it back.
Not this
- A note you write and edit as Markdown: use a document (card Document). An
uploaded Markdown File is a document too, once it has a path
(
penumbra files place <file> <path>). - A set of Files that belong together: use a collection (card Collection).
- A folder kept current from a place outside the project: use a source (card source).
Rules
-
file.1A newer copy of a document is a new version of the same File. Usepenumbra files replace. It keeps the File ID, name, tags and collections. Your job: if you upload the copy as a new File, search returns both copies and nothing marks one as older. -
file.2A File takes one new version at a time. Enforced: a replace is refused withversion_in_progresswhile another version of that File is still processing. Wait for the first one, then replace again. -
file.3Replace only the version you read. Enforced when you ask: pass--expectwith that version ID topenumbra files replace, and a different current version is refused withversion_conflict. Without it, the replace builds on whichever version is current when Penumbra admits it. -
file.4The source date is the date the document states about itself, such as a filing, sent or report date. Each version has its own. A year, a month, a day or a full date-time is accepted. Your job: send--source-datewith every upload and replace. A new version does not inherit the old date. Without a date, an entity extracted from that version has a source time with no date. -
file.5Set or change a source date later withpenumbra files source-date. It changes the current version unless you pass--version. On MCP, the toolupdate_filedoes the same when the connection holds the permissionset_source_date. Without it, a source date is refused withaccess_denied. Your job: set the date before you extract. An extraction copies the source date when it starts, and a later change does not reach entities already saved. -
file.6Uploading bytes that the project already holds returns the existing File. Your job: the name, tags and description you sent are ignored, and the File keeps the upload batch of its first upload (rule file.13). Read the File withpenumbra files showand set them if they matter. -
file.7Uploading or replacing starts no extraction. Your job: the entities do not change when a new version arrives. Start an extraction on the new version when the Graph must follow (card Extraction). -
file.8Trashing a File waits for approval when you act with an API key or as a connected agent. Enforced: the result ispendingwith an approval link, and nothing changes yet. Do not retry. Restore and move do not wait. -
file.9Trash takes the File out of search. Restore brings the current version back. Enforced: after Penumbra purges the bytes, a restore is refused withfile_content_purged. Your job: before you trash, list the entities that cite the File withpenumbra context explore --file-id. Their citations stay on the trashed File. -
file.10A CLI command that changes a File needs its exact name, its path or its ID. Enforced: a partial name is refused withfile_not_exact, and a name that two Files share is refused withfile_ambiguous. Neither command changes anything. -
file.11A stored version is searchable by words before it is searchable by meaning. Your job:--waitonpenumbra files uploadorpenumbra files replacereturns when the version is searchable by words. Read the semantic status inpenumbra files inspectbefore a meaning search. -
file.12A File can carry a title: the clearer name a person or a naming convention gives it. Set it withpenumbra files title <file> <title>and remove it with--clear. On MCP, the toolupdate_filesets it when the connection holds the permissionset_file_title. Enforced: a title never changes the File’s name or path, so a note’s[[link]]to the File keeps resolving. It works on a File kept in sync with a folder (card source), where renaming the File withpenumbra files movesets the title instead. Search and[[links]]find the File by its title. Your job: give a synced File its title here; its name stays the folder’s. -
file.13Files you upload together are one drop, and a drop is one upload batch with one optional note: why you share them.penumbra files uploadmakes a batch when you give it more than one file or--note. To make one on its own, runpenumbra files batches create, then pass--batchto the upload. Penumbra reads the note when it suggests names, tags and collections for every File in the batch. Enforced: a note over 2,000 characters is refused, and so is a batch id that the project does not hold. Your job: write the note before you upload, because a batch never changes. -
file.14A web page can be a File (card website).penumbra web save <url>…saves up to 50 public pages, andpenumbra web crawl <url>saves the pages of a site into one collection. A page File keeps its web address, has searchable text and has pictures of the page. It sits in the Workspace under/web/<host>/<path>/index. Choose another folder with--to. Enforced: Penumbra refuses an address that is not public, withurl_not_allowed, and a page that the site’s rules keep out, withurl_blocked_by_robots. It reports a page that the project already holds asalready_in_projectand does not capture it again, so no new version is made. Each captured page is charged, and a page that fails costs nothing. Your job: show the person the kept count and the estimate before a crawl.penumbra web crawl --dry-runprints them. A crawl of more than 100 pages is refused with the same dry run (recipe bring-in-a-website). Keeping a captured page current from the web is not available. -
file.15A captured page keeps pictures unless you pass--pictures none.--pictures fullis the default and keeps the whole page,--pictures viewportkeeps the first screen. Enforced: a page keeps at most 20 pictures, from the top down, and a longer page warnspage_pictures_truncated. The text of the whole page stays searchable. Your job: tell the person which pages lost their lower pictures (problem page-pictures-truncated).
Failure signs
- Search returns two passages that say different things about one fact: problem two-editions-two-files.
- The Graph still shows the facts of the old edition: problem new-version-not-extracted.
- Entities cite a version that is no longer current: problem entities-cite-replaced-version.
- An entity’s only citations point to a trashed File: problem entity-rests-on-trashed-file.
- A replace is refused with
version_conflict: read the versions again withpenumbra files versions, decide, and replace with the new version ID. - A trash returns
pendingor exit code 4: problem change-waits-for-approval. - A File has no source date: problem file-has-no-source-date.
- A new File is missing from a meaning search: problem new-file-not-searchable-yet.
- An upload returned an old File and no new version: problem same-bytes-no-new-version.
- The text of a File lost its tables or headings: recipe check-file-text.
- A page is refused with
url_blocked_by_robots: problem page-blocked-by-robots. - A crawl keeps far fewer pages than the site has: problem crawl-found-fewer-pages.
- A page’s pictures stop partway down: problem page-pictures-truncated.
- A save reports a page as already in the project: problem page-already-in-project.
Doors
No MCP tool uploads or replaces a File, and none brings in a web page. Use the
CLI, the SDK or HTTP. An agent connected only through MCP cannot put a new
edition into a File.
HTTP reference
- Create upload session
- Get upload session
- Add file
- List files
- Resolve files
- Replace file
- List file versions
- Get file version
- Get file processing status
- Download file
- Get file text
- Get file pages
- List file citations
- Set file title
- Set file description
- Set file tags
- Set file source date
- Trash files
- Restore files
- Get file operation
- Recover file request