CLI: Command hangs when creating notes with multibyte characters (CJK, unicode)

Steps to reproduce

  1. Open terminal
  2. Run: timeout 5 obsidian create path="Test.md" content="Test" overwrite vault="Obsidian Sandbox"
    • Result: File is created successfully with “Test” content
  3. Run: timeout 5 obsidian create path="Test.md" content="日本語" overwrite vault="Obsidian Sandbox"
    • Result: Command times out and fails

Did you follow the troubleshooting guide? [Y/N]

Yes.
Tested in a sandbox vault with no third-party plugins, no CSS snippets, and default theme.

Expected result

The command should create a file with multibyte character content (Japanese, Chinese, Cyrillic, emoji, etc.) just like it does with ASCII and Latin-1 text.

Actual result

The command hangs and times out when trying to write multibyte characters. The file is not created. Latin-1 characters (like “Café”) work fine, but anything beyond that fails.

# ASCII works:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="Test" overwrite vault="Obsidian Sandbox"
Created: Test.md

# Latin-1 works:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="Café" overwrite vault="Obsidian Sandbox"
Overwrote: Test.md

# Japanese fails:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="日本語" overwrite vault="Obsidian Sandbox"
Failed

# Chinese fails:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="你好" overwrite vault="Obsidian Sandbox"
Failed

# Emoji fails:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="🎉" overwrite vault="Obsidian Sandbox"
Failed

# Cyrillic fails:
tats@youth:~% timeout 5 obsidian create path="Test.md" content="Привет" overwrite vault="Obsidian Sandbox"
Failed

Environment

SYSTEM INFO:
	Obsidian version: 1.12.0
	Installer version: 1.11.7
	Operating system: Darwin Kernel Version 25.3.0: Wed Jan 28 20:48:41 PST 2026; root:xnu-12377.81.4~5/RELEASE_ARM64_T6041 25.3.0
	Login status: logged in
	Language: en
	Catalyst license: insider
	Insider build toggle: on
	Live preview: on
	Base theme: adapt to system
	Community theme: none
	Snippets enabled: 0
	Restricted mode: off
	Plugins installed: 0
	Plugins enabled: 0

RECOMMENDATIONS:
	none
3 Likes

thanks, we are aware of this.

However we can’t reproduce consistently in our systems.

Which shell are you using?

I can confirm this on Ubuntu 24.04.3 LTS with fish shell

Environment: Obsidian 1.12.0 (installer 1.11.7), Linux x86_64 (Ubuntu 24.04, kernel 6.8), LANG=en_US.UTF-8, LC_ALL=C.UTF-8. CLI binary at /opt/Obsidian/obsidian, symlinked from
~/.local/bin/obsidian.

Problem: Any CLI command that passes a 3-byte (or wider) UTF-8 character in any parameter value hangs indefinitely. The command never returns — no output, no error. Requires manual kill.

Reproducer:

Works (ASCII + 2-byte UTF-8):

obsidian create vault=“my-vault” name=“test1” content=“Hello world” #
obsidian create vault=“my-vault” name=“test2” content=“Über cool” # (Ü = 2-byte)
obsidian create vault=“my-vault” name=“test3” content=“mañana” # (ñ = 2-byte)

Hangs (3-byte UTF-8):

obsidian create vault=“my-vault” name=“test4” content=“em dash — here” # (— = U+2014, 3-byte)
obsidian create vault=“my-vault” name=“test5” content=“en dash – here” # (– = U+2013, 3-byte)
obsidian create vault=“my-vault” name=“test6” content=“Price is 50€” # (€ = U+20AC, 3-byte)
obsidian create vault=“my-vault” name=“test7” content=“Hello 你好” # (CJK = 3-byte)

Key observations:

  • Affects any parameter, not just content= (e.g. name=“test—file” also hangs)
  • Affects both create and append commands
  • 2-byte UTF-8 (Latin Extended: ü, ñ, é, etc.) works fine
  • 3-byte UTF-8 (U+0800–U+FFFF: em/en dash, euro sign, CJK, etc.) causes hang
  • Quoting strategy doesn’t matter (double quotes, single quotes, $‘…’ with hex escapes all hang)
  • Locale override (LC_ALL=en_US.UTF-8) doesn’t help
  • obsidian read works fine for files that already contain these characters
1 Like

does it happen with bash instead of fish?

which terminal emulator are you using?

Same thing with bash. Tested both on Ghostty 1.3.0-dev+0000000 and GNOME Terminal 3.52.0.

are you using our appimage or snap?

I am using the Deb from the download page.

I did some additional testing to narrow down the reproduction conditions.

Environment:

  • macOS Tahoe 26.3
  • Obsidian 1.12.0 (installer 1.11.7)
  • .app installation from download page
  • Tested on:
    • zsh + Ghostty 1.2.3
    • zsh + Terminal.app
    • bash + Ghostty 1.2.3
  • Locale: LANG=en_US.UTF-8

Key finding is that the hang occurs when the command-line arguments contain both a space and a 3-byte UTF-8 character.

The space and the 3-byte UTF-8 don’t need to be in the same parameter. For example, a space in the vault name combined with a CJK character in content= is enough to trigger the hang.

# [OK] No space anywhere + 3-byte UTF-8
obsidian create path="Test.md" content="日本語" overwrite vault="vault"
obsidian create path="Test.md" content="Test日本語" overwrite vault="vault"

# [OK] Space present + 2-byte UTF-8 only
obsidian create path="Test.md" content="Café" overwrite vault="Obsidian Sandbox"
obsidian create path="Test.md" content="Hello world" overwrite vault="Obsidian Sandbox"

# [HANG] Space in vault name + 3-byte UTF-8 in content
obsidian create path="Test.md" content="日本語" overwrite vault="Obsidian Sandbox"
obsidian create path="Test.md" content="🎉" overwrite vault="Obsidian Sandbox"
obsidian create path="Test.md" content="—" overwrite vault="Obsidian Sandbox"

# [HANG] Space in content + 3-byte UTF-8 in content (no space in vault name)
obsidian create path="Test.md" content="日本語 a" overwrite vault="vault"
obsidian create path="Test.md" content="a 日本語" overwrite vault="vault"

Additional observations:

  • Reproduces identically across shells (zsh, bash) and terminal (Ghostty, Terminal.app)
  • @vlahan’s examples are also consistent with this pattern. All hanging cases (“em dash — here”, “en dash – here”, “Price is 50€”, “Hello 你好”) contain both a space and a 3-byte UTF-8, while all working cases contain only ASCII or 2-byte UTF-8
3 Likes

I have the same issue, but it doesn’t occur in the TUI interface.

I have the same issue on MacOS Tahoe, ZSH, Ghostty. Claude came up with the follow problematic scenarios:

  The Obsidian CLI v1.12.1 hangs indefinitely when content= arguments contain certain Unicode characters. This affects append, prepend, and create commands.

  Characters that hang

  ┌───────────┬──────────┬───────────┐
  │ Character │   Name   │ Codepoint │
  ├───────────┼──────────┼───────────┤
  │ —         │ Em dash  │ U+2014    │
  ├───────────┼──────────┼───────────┤
  │ –         │ En dash  │ U+2013    │
  ├───────────┼──────────┼───────────┤
  │ •         │ Bullet   │ U+2022    │
  ├───────────┼──────────┼───────────┤
  │ …         │ Ellipsis │ U+2026    │
  ├───────────┼──────────┼───────────┤
  │ →         │ Arrow    │ U+2192    │
  ├───────────┼──────────┼───────────┤
  │ 🎉        │ Emoji    │ U+1F389   │
  └───────────┴──────────┴───────────┘

  Characters that work fine

  ┌───────────┬──────────────────────────────┐
  │ Character │             Name             │
  ├───────────┼──────────────────────────────┤
  │ ©         │ Copyright (U+00A9)           │
  ├───────────┼──────────────────────────────┤
  │ é         │ Accented (U+00E9)            │
  ├───────────┼──────────────────────────────┤
  │ " "       │ Curly quotes (U+201C/U+201D) │
  ├───────────┼──────────────────────────────┤
  │ ` * `     │  # $ ! []`                   │
  └───────────┴──────────────────────────────┘

It's NOT a shell escaping issue

Tested with single quotes, double quotes, and heredocs — all hang equally. The bug is in the Obsidian CLI's argument parser (likely Electron's command-line processing).
1 Like

this should be fixed in v1.12.2. ETA unknown.

3 Likes

Thanks for the fix, Obsidian team — I can confirm this issue is resolved in 1.12.2.

Kanji, kana, and emoji are working fine for me now on macOS and Windows using Obsidian 1.12.2. They were previously hanging the terminal.


Unless there are outstanding issues, I think this can be marked as solved, and sent to the bug graveyard once the public release comes out :waving_hand: