3 ms·
For me, step 1 of trying to make Claude even vaguely usable is putting in a hook that just tells it 'FUCK YOU, STOP USING PIPES' whenever it tries to chain mult
by crooked-v 2mo ago
For me, step 1 of trying to make Claude even vaguely usable is putting in a hook that just tells it 'FUCK YOU, STOP USING PIPES' whenever it tries to chain multiple bash commands.
- lonelyParens 2mo agostealing this
- miki123211 2mo agoKeep in mind that this likely destroys context and makes your costs go up considerably. An agent often wants pipes so that it can `show_lots_of_logs | sed ...` and only see the part related to whatever error it's currently trying to debug. Without pipes, it has to take that entire log into the context. An agent without pipes is like a human without the ability to scroll.
- roywiggins 2mo agoI guess ideally you'd want to force it to pipe each step back into the agent/IDE for display (and optionally wait for approval) rather than shoving it into the context. And with some sort of heuristic to skip commands that are piped into sed and similar. or use just use actual files instead of pipes with a permissions dialogue gate on write. That would work already in Claude I think, and with IDE integration it would show each step as it went. Of course buffering every step of a pipeline will have its own side-effects.
- Fabricio20 2mo agoIf only the piping wasn't execessively cutting too.. `cat | head -10` -> `cat | head -20` -> `cat | head -40` yeah.. I think at some point we need to start sanitizing our tool outputs so that this just isn't necessary at all, long term fixing the tools (ie: gradle outputs like 500 lines of logs for a ... build succeeded), maybe short term a small model in front would be better than all this cut loop fail. One can wish.
- StilesCrisis 2mo agoMy favorite is when Claude runs a slow process piped to tail only the last few lines, and then the result isn't what it expected, so it needs to rerun the whole thing. Agents need a way to discard useless data out of context once it's served its purpose, instead of forcing them to preemptively tail everything.
- Fabricio20 2mo agoThis was so bad for me I actually added a tool hook that `time`s the tool calls and adds it as [Execution took: Xm, Ys] at the end of every tool call, it helps a little (claude in particular after two executions tends to switch strategy entirely) but in general the agents still insist on cut/tailing the output rather than just dumping it to a file for example! Now that I think about it, maybe I can have a tool hook that detects those cut/tail exessive piping and just strips them and dumps the full output to a temp file..
- totetsu 2mo agoCould it just set up to do like Command | tee -a activity.log | tail -5 So the context only gets a few lines but everything is still logged?
- godelski 2mo agoMy favorite is Claude finding .git/index.lock, asking to remove it, finding out it no longer exists, and then hitting a lock again that it itself created. Poor little robot, stop shooting yourself in the foot.
- StilesCrisis 2mo agoCould be worse! Claude just assumes repos all use git, and will try to run git commands against a Perforce repo unless your CLAUDE.md gives it strict instructions. When the git commands fail, it will just use chmod to make the files writable. (P4 marks files as not-writable until you check them out.)