Severe pasting issues, code gets mangled into markdown

Hi,

Since the last two days, when I paste complex code into chatgpt, the LLM itself receives a mangled version of my text
Here is one especially annoying and short example

Creating CAB file.  Please wait...
---
MakeCAB Report: Sat Aug 08 19:50:13 2026

Total files:              4
Bytes before:     2,432,599
Bytes after:      2,349,850
After/Before:            96.60% compression
Time:                     0.68 seconds ( 0 hr  0 min  0.68 sec)
Throughput:            3508.99 Kb/second
---
Creating the package...
Done!

This text becomes

And that’s not all !

For example I paste this command into chatgpt

VMID="$(pvesh get /cluster/nextid)"; NAME="win10-$VMID" MAC=DE:AD:BE:EF:42:70 DISK=64 RAM=6/25% CORE=90% OS=win10 ISO=win10u,virtcd FIRMWARE=efi MACHINE=q35 AGENT=yes STORAGE="$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')" BRIDGE=vmbr0 FIREWALL=no CACHE=writeback VGA= AUDIO=yes BOOT='virtio0;ide2' START=yes; DO_CREATE=yes; VMID="${VMID:-$(pvesh get /cluster/nextid)}"; MAC="${MAC:-DE:AD:BE:EF:42:70}"; DISK="${DISK:-64}"; RAM="${RAM:-6}"; CORE="${CORE:-90%}"; OS="${OS:-win10}"; NAME="${NAME:-$OS-$VMID}"; FIRMWARE="${FIRMWARE:-efi}"; MACHINE="${MACHINE:-q35}"; AGENT="${AGENT:-yes}"; STORAGE="${STORAGE:-$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')}"; BRIDGE="${BRIDGE:-vmbr0}"; FIREWALL="${FIREWALL:-no}"; CACHE="${CACHE:-writeback}"; AUDIO="${AUDIO:-yes}"; BOOT="${BOOT:-virtio0;ide2}"; START="${START:-yes}"; if ! command -v dialog >/dev/null; then read -r -p "dialog is not installed. Install it now? [Y/n] " DIALOG_INSTALL; case "${DIALOG_INSTALL:-Y}" in [Yy]*) apt-get update && apt-get install -y dialog || echo "WARNING: dialog installation failed; continuing without UI." ;; esac; fi; if command -v dialog >/dev/null; then TMP="$(mktemp)"; if dialog --clear --title "Create Proxmox VM" --ok-label "Create" --cancel-label "Cancel" --output-fd 3 --form "Review or edit VM settings" 24 90 19 "Name:" 1 2 "$NAME" 1 24 55 0 "MAC:" 2 2 "$MAC" 2 24 55 0 "Disk (GB):" 3 2 "$DISK" 3 24 55 0 "RAM:" 4 2 "$RAM" 4 24 55 0 "Core:" 5 2 "$CORE" 5 24 55 0 "OS:" 6 2 "$OS" 6 24 55 0 "ISO:" 7 2 "$ISO" 7 24 55 0 "Firmware:" 8 2 "$FIRMWARE" 8 24 55 0 "Machine:" 9 2 "$MACHINE" 9 24 55 0 "Agent:" 10 2 "$AGENT" 10 24 55 0 "Storage:" 11 2 "$STORAGE" 11 24 55 0 "Bridge:" 12 2 "$BRIDGE" 12 24 55 0 "Firewall:" 13 2 "$FIREWALL" 13 24 55 0 "Cache:" 14 2 "$CACHE" 14 24 55 0 "VGA:" 15 2 "$VGA" 15 24 55 0 "Audio:" 16 2 "$AUDIO" 16 24 55 0 "Boot:" 17 2 "$BOOT" 17 24 55 0 "VMID:" 18 2 "$VMID" 18 24 55 0 "Start:" 19 2 "$START" 19 24 55 0 3>"$TMP"; then mapfile -t F < "$TMP"; NAME="${F[0]}"; MAC="${F[1]}"; DISK="${F[2]}"; RAM="${F[3]}"; CORE="${F[4]}"; OS="${F[5]}"; ISO="${F[6]}"; FIRMWARE="${F[7]}"; MACHINE="${F[8]}"; AGENT="${F[9]}"; STORAGE="${F[10]}"; BRIDGE="${F[11]}"; FIREWALL="${F[12]}"; CACHE="${F[13]}"; VGA="${F[14]}"; AUDIO="${F[15]}"; BOOT="${F[16]}"; VMID="${F[17]}"; START="${F[18]}"; else DO_CREATE=no; fi; rm -f "$TMP"; clear; [ "$DO_CREATE" = yes ] || echo "CANCELLED: No VM was created."; fi; if [ "$DO_CREATE" = yes ]; then if qm create "$VMID" --name "${NAME:-${OS:-win10}-$VMID}" --machine "$(if [ "${MACHINE:-q35}" = 440 ]; then printf pc; else printf q35; fi)" --ostype "${OS:-win10}" --cpu host --cores "$(awk -v r="${CORE:-90%}" -v h="$(nproc)" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=a[i]+0}v=p?int(h*p/100):0;c=(v>m?v:m);if(c<1)c=1;if(c>h)c=h;print c}')" --memory "$(awk -v r="${RAM:-6}" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=(a[i]+0)*1024}}/^MemTotal:/{v=int($2*p/102400);print (v>m?v:m);exit}' /proc/meminfo)" --virtio0 "${STORAGE}:${DISK:-64},cache=${CACHE:-writeback},discard=on,iothread=1" $(IDE=2; if [[ ",${ISO:-}," == *,win10u,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10e,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_English_x64.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,virtcd,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/virtio-win-latest.iso,media=cdrom'; IDE=$((IDE+1)); fi) --net0 "virtio=${MAC:-DE:AD:BE:EF:42:70},bridge=${BRIDGE:-vmbr0},firewall=$(if [ "${FIREWALL:-no}" = yes ]; then printf 1; else printf 0; fi)" --boot "order=${BOOT:-virtio0;ide2}" $(if [ "${AUDIO:-yes}" = yes ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=none; fi) $(if [ "${AUDIO:-yes}" = spice ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=spice; fi) $(if [ "${AGENT:-yes}" = yes ]; then printf '%s\n' --agent enabled=1,fstrim_cloned_disks=1; fi) $(if [ -n "${VGA:-}" ]; then if [ "$VGA" = spice ]; then printf '%s\n' --vga qxl; else printf '%s\n' --vga "$VGA"; fi; fi) $(if [ "${FIRMWARE:-efi}" = efi ]; then printf '%s\n' --bios ovmf --efidisk0 "$STORAGE:4,efitype=4m,pre-enrolled-keys=1"; fi) $(if [ "${FIRMWARE:-efi}" = bios ]; then printf '%s\n' --bios seabios; fi); then if [ "${START:-yes}" = yes ]; then if qm start "$VMID"; then echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE and started successfully"; else RC=$?; echo "WARNING: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE but failed to start with exit code $RC" >&2; false; fi; else echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created successfully on $STORAGE and left stopped"; fi; else RC=$?; echo "ERROR: VM $VMID was not created; qm create exited with code $RC" >&2; false; fi; fi

This code is mangled AFTER pressing send

Here is from the prompt bubble

But then the LLM sees something different

c

Also please note that autoclosing every thread in 24 hours, is a great way to shut discussions down.

image

If you don’t want user to tell you how to improve the product, then just don’t have a forum at all …

Hey there @shodan I see and feel you with this. When marking a thread explicit to ChatGPT tag the thread gets closed automatically after 24 hours. The reason is, and this apply to Codex / ChatGPT Codex App too, both have their dedicated channels to interact for this kind of topics.

ChatGPT has Discord
Codex has GitHub
API has the Dev Forum

This of course has room if you mark such topics with bugs or support and not just ChatGPT in the tags.

As for the problem itself, there are two options you can try with paste the text on the prompt area:

  1. Paste the text without formatting, mouse right click paste without formatting, or Ctrl+Shift+V (Command + Shift + V on macOS) to just have plaintext
  2. Use markdown code fencing fencing for the code aspects of your prompt. This way the fenced code retains the syntax.

For now, you can also select text already in the prompt text area and you’ll see a minimal formatting toolbox for markdown that might help.

I do hope in the future there’s a more robust toolbox or a setting to work with plaintext and switch to markdown as needed. Both modes have their pros and cons for the user.

Hi,

Thanks for taking the time to answer this.

I wish to make the input box just not be markdown at all and I would like also a plain text output from the LLM at this point, fighting the markdowning/demarkdowning is become a chore lately. I’m not super into having to markdown format for the bot now, I never really got into using that syntax.

Yes I do use CTRL+SHIFT+V almost all of the time now as I discussed in a previous thread before it was also promptly closed How to disable "pasted text documents" ? They are unreliable and super annoying

Also the small text box that can’t be manually resized in height or width doesn’t make things any easier !

As for autoclosing the thread so quickly as though they were taxi fare counters I don’t see the point. I don’t have a discord and I’m not getting one, even if I did, it’s impossible to search anything on there so I don’t see why people would discuss things here since no one else can see it. Github discussion have a similar problem, even though they can technically be searched, their search tools are nearly unusable.

Totally understandable. I resorted for now to prepare my prompts in an external editor because of this. Once I finished my prompt I copy it into ChatGPT.

Can use marktext for example, Obsidian but this one would be too much for just prompts. Or if you just want to go minimalist can always use notepad in windows which supports basic markdown now too.

  ``` 
  <code here>
  ```

Of course withoud the indentation, here is needed for the example.

Pasting code into ChatGPT as part of a prompt was a common workflow before Codex, and it is still useful in some cases.

However, when working on a software project, Codex can eliminate much of that copying and pasting because it can work directly with the code in your project and, depending on the environment and permissions, run commands and inspect their output.

Personally, I use Codex on Windows 11 with the Codex extension for VS Code. This lets me work with Codex alongside the code rather than repeatedly copying code and command output into ChatGPT.

Thing is that the markdown auto formatting is now across all versions of ChatGPT in the input area. Have to take into account that not all users are well versed to know these things. Even some seasoned users and developers never touched markdown in their entire life. Sounds weird but seen it a lot. So need to focus a bit on UCD - UI/UX to target a broader audience.

Thanks for the suggestion

I really wish I could just make that textbox plaintext only and disable all that rich text stuff when I don’t want it !

Sometimes it will give me the code in a markdown as well, so when you go to copy and paste it, it gets mangled outgoing too.

When that gets too tedious I ask it to just give me files but then it often starts giving me the same unmodified file over and over even when I tell it the latest modification aren’t in it !

I mostly use notepad++/nano and file explorer as my IDE so that had been working well until now.

I’ve cobbled together a bunch of scripts to speed up that process

and soon I’m going to add a couple more scripts to have the LLM modify the files directly using a tool interface and I’ll be using an universal LLM API so escape the vendor lock-in I’ve been feeling with LLM usage.

I realize that I used to just paste anything and it used to just work.

Then they added the “feature” that if you paste something bigger than a page, it would add it as a pasted document, which is still mostly broken, but was completely broken, as I mentionned earlier in my other post.

So I started to CTRL+SHIFT+V instead of CTRL+V like normal, which I found and still find REALLY annoying ! And I do it now on EVERY SINGLE PASTE because I don’t know nor keep track of where the limit is between a small enough paste and a too big paste…

And with this new breakage now, everytime I paste something, now I will have to do

QUOTE SPACE QUOTE SPACE QUOTE SPACE CTRL+SHIFT+V

This … really sucks !