How to use it

Two steps to a readable account of what you did.

1 Fly. Then ask for the log.

Fly, then say "write up my session" or "what did I do this week".

D47 writes a log in which every sentence traces to a journal event.

write up my session Ask "what did I do this week" — "log the last two hours" Every sentence traces to a journal event, so nothing in it is invented.

2 Read it, and keep it if you want it.

Read the Commander's log and keep it if you want it.

The log is saved on your machine as plain text you can read without D47.

Commander's log Left Kuwemaki A 3 at 19:04 Sold 42 t of gold at Jameson Memorial 1.4 m cr Unlocked Felicity Farseer Saved to your own machine, in plain text you can read without D47.

! The one that stops people.

Fly a longer session before you ask for a log.

A quiet session gives a short log, which is the log being accurate.

It writes up what the journal saw, not what you meant. A quiet session produces a short log. That is the log being accurate rather than broken.
Why it works this way

A session, or a week, turned into a readable log — where every sentence traces to an event.

1 The model is never handed your journal.

YOUR JOURNAL 4,812 events 34 NUMBERED FACTS computed here, on this machine THE MODEL sees only the list A model handed your journal will write a better evening than the one you had. It promotes a routine docking into a narrow escape, because that reads better and nothing stops it.

2 So every sentence has to cite, and the strays are marked.

Left Deciat with a full hold, bound for the rim. [3] Sold 640 tonnes across nine sales, mostly Painite. [5] It was a close-run thing. ← cites nothing, and is marked right here Counted in the header, marked where it stands, listed at the foot. The brackets stay in the finished file on purpose — a Sources section no sentence points into records nothing.

Nothing you or anybody else typed in game is ever part of it. ReceiveText and SendText have no handler at all, so a hostile message cannot travel into the largest prompt Directive 47 assembles — or out of it into something you posted.

3 Three voices, and they are not interchangeable.

YOU WRITE IT your own account, first person — the default D47 WRITES ABOUT YOU the ship’s AI, in the personality you chose YOU WRITE, IT CHIPS IN your account, with a handful of interjections The middle one is the only one Directive 47 can do — which is why you opt into it. With personality off it writes plainly, and the header says which voice actually wrote it.

4 It can quote you before it spends anything.

you: write my commander’s log D47: 34 things I can account for, out of 4,812 events. Writing it would cost about $0.04. Say “write the log” and I will. you: write the log

Prose over a long session is the largest single request Directive 47 will ever make, so it never happens by itself: no schedule, no trigger, no callout starts one. Working out that price reads your journals here and sends nothing. The quote is optional; “write the log” with no quote writes straight away.

5 Story objectives are facts too.

Each story objective you reach in the window becomes a fact of its own, sourced to the journal event that fired it, such as a Docked for a dock objective. A story chapter’s objective names the story and the chapter, for example “Reached "The Anchorage", chapter 3 of The Marker.” Nothing from a story’s hidden layer is ever put in the log.

The details

Directive 47 can turn a session — or a week — into a readable log, written to plain markdown beside the executable so you can keep it, edit it, and post it wherever you like.

Elite’s community has been writing Commander’s logs by hand since 3300. This writes the first draft.

Every sentence traces to an event

This is the whole quality bar, and it is why the feature is not simply a prompt.

A model handed your journal will write a better evening than the one you had. It will promote a routine docking into a narrow escape, because that reads better and nothing stopped it. So the model is never handed your journal. It is handed a numbered list of facts d47 computed:

[3] (travel) 42 hyperspace jump(s), 1,204 ly in total, Shinrarta Dezhra out to Deciat.
[4] (mishap) Was interdicted by Ordo Vulpes, and submitted.
[5] (trade) Sold 640 tonnes across 9 sale(s) for 12,410,000 Cr, mostly Painite.

Every sentence it writes has to end with the numbers of the facts it rests on — [4], or [4,11]. When the log comes back, d47 reads it again and checks all of it. A sentence citing nothing came from somewhere other than your journal; a sentence citing a fact that does not exist is worse, because it looks like evidence. Both are marked in the file where they stand, counted in the header, and listed at the foot.

The brackets stay in the finished file on purpose. A Sources section that no sentence points into records nothing. Delete them before you post it — that is ten seconds of the editing this file already expects.

Nothing you or anybody else typed in game is ever part of it. ReceiveText and SendText have no handler at all, so a hostile message in an open system cannot travel into the largest prompt d47 assembles, or out of it into something you posted.

Whose log it is

Three voices, and they are not interchangeable.

Setting What it writes
You write it, in your own words Your own account, first person. The shipped default, and the plain one.
D47 writes about you the core, in the personality you have chosen, writing about your flying.
You write, D47 chips in Your account, with D47 interjecting a handful of times.

The second is the one only d47 can do, which is exactly why it is the one you opt into rather than the one that happens to you the first time you press a button.

A log is d47 speaking at length, so it inherits the persona’s protection. With personality switched off, the core’s voice writes plainly rather than writing as somebody else, and the commentary voice loses its commentary. Either way the file’s header says which voice you asked for and which one actually wrote it.

What a log covers

The last session, today, the last seven days, or the last thirty. A session means since you last entered the game — not since the journal file started, because Elite rolls a long session into a continuation file without saying so.

Two exact dates are available from the panel. They are not available by voice, and that is deliberate: the phrase router matches whole phrases and extracts nothing from them, which is what stops it guessing at a date and confidently writing up the wrong fortnight.

It costs money, and can quote you first

Prose over a long session is the largest single request d47 will ever make. So:

  • It never happens by itself. There is no schedule, no trigger, no callout that starts one.
  • It can quote you first. Working out the cost reads your journals on this machine and sends nothing. The quote is optional: Write it in the panel and write the log both write straight away when nothing has been quoted.
  • It reports what it actually cost afterwards, through the same spend ledger as everything else, so what has this cost this month includes it.

Asking for a quote first looks like this:

you: write my commander’s log

D47: A log of the last session: 34 things I can account for, out of 4,812 events in 2 journal file(s). Writing it would cost about $0.04 — about 2,100 tokens in and up to 1,800 tokens of prose back, through claude-opus-5. Say “write the log” and I will.

you: write the log

A model changed between the quote and the write is refused rather than honoured, so a quote is always the price of the write that follows it.

How long a log runs is a setting — brief, standard or full — because the output budget is most of what that figure is pricing.

Writing one

Open Commander’s log in the panel, or say:

write my commander’s log

Files land in data/commander-log/ as markdown, named for the day and the span. A run never overwrites one: the first may already have been edited, and this is the one file in data/ that d47 does not consider its own.

Tools

Every tool here is protected — the panel, a hotkey and the phrase router reach them, and the language model does not. Phase 32 kept its tools away from the model because the model is the component that reads untrusted text. The same reasoning carries one step further here: the model is also not the component that gets to authorise the largest request d47 makes.

estimate_log

Reads the window, prices it, and gets ready. Spends nothing.

{"type":"object","properties":{"range":{"type":"string","description":"What span to cover. Omit for whatever the settings say.","enum":["session","today","week","month"]}},"required":[],"additionalProperties":false}

write_log

Writes the log that was just quoted, or, with no quote, prices the span the settings name and writes it in the same step. A quote is consumed whether the write succeeds or not. A window with nothing in it is not written.

{"type":"object","properties":{},"required":[],"additionalProperties":false}

list_logs

What has been written, and where.

{"type":"object","properties":{},"required":[],"additionalProperties":false}