mohManual

Manual/Everyday work

Files, images and the shell

Chapter 07 · 2 min read

Point moh at exactly what you mean: attach a file, a folder or a picture to your message with @, or run a command of your own with ! and let moh see the result.

Attach files and folders with @

Type @ in your message and a small search box appears. Start typing a name — the letters don't need to be next to each other — pick the file and press enter.

@ mention
› why does @st▏
› why does @src/session/store.ts lose the last line?
The path stays in your message, and moh receives a snapshot of the file with it.
  • A file travels with its content; a folder travels as a list of what is inside.
  • Drag and drop works too: pasting a file path into the message turns it into a mention.
  • Mentions follow your permission rules. A file that is missing, blocked or too large produces a visible warning instead of silently disappearing — you always know what the AI actually received.

Images

Mention a picture the same way — a screenshot of a bug, a mock-up of a page. If the model you are using can see images, moh passes it along. If it can't, moh keeps a text note and tells you why, rather than quietly dropping it.

Terminals that can draw pictures (such as iTerm2, kitty, Ghostty or WezTerm) show a small preview right in the conversation; everywhere else you get a readable placeholder. You can turn previews off in the settings.

Run your own commands with !

Sometimes you just want to run something yourself — check the status of your files, run the tests — without phrasing it as a request and waiting for moh to decide. Start your message with !:

! command
› you !git status --short
◌ permission bash · y yes n no
✓ bash git status --short · 0.1s
M src/session/store.ts
› you !!npm test
✓ bash npm test · 8s · 42 passing
↳ output sent to the model
You typeWhat happens
!git statusRuns the command and shows the output. It is kept in the conversation, so moh can use it on its next turn if it is relevant.
!!npm testRuns the command and, when it finishes, sends the output straight to moh — "here, look at this".
\!helloA normal message that happens to start with !; the backslash is removed.

Same gate, same record

A ! command goes through the same permission rules as moh's own commands — if shell commands are denied, so is this. Because you typed it yourself, the question is just yes or no, and it never creates an "always" rule. It waits until moh has finished its current turn, stops after 120 seconds, and secrets in its output are masked before anything is saved.

Written for moh 0.61. Inside moh, ctrl+h opens the built-in manual for your exact version.