Files
ccs/docs/en/troubleshooting.md
T
kaitranntt 296d5661d0 docs: mark native shell installers as deprecated across all documentation
Phase 02 of "Deprecate Native Installers" plan:

Documentation updates (10 files, 3 languages):
- README.md: Mark curl/irm installers as deprecated in collapsed section
- docs/en/installation.md: Add deprecation warnings, emphasize npm as primary
- docs/en/troubleshooting.md: Add FAQ for deprecation warning users see
- docs/en/usage.md: Update uninstall to show npm first, legacy second
- docs/version-management.md: Strikethrough deprecated release checklist items
- docs/ja/README.md: Japanese deprecation notice
- docs/vi/README.md: Vietnamese deprecation notice
- docs/vi/installation.vi.md: Vietnamese installation deprecation
- docs/vi/troubleshooting.vi.md: Vietnamese troubleshooting deprecation
- src/commands/help-command.ts: npm as recommended uninstall method

Code quality:
- Fixed emoji violations: replaced ⚠️ with [!] per CLAUDE.md ASCII-only rule
- Consistent messaging across EN/JA/VI translations
- Updated codebase-summary.md with Phase 02 achievements

All documentation now consistently recommends:
  npm install -g @kaitranntt/ccs

Legacy installers (curl/irm) show deprecation warning and auto-redirect
to npm installation when Node.js is available.
2025-11-28 02:39:48 -05:00

593 lines
13 KiB
Markdown

# CCS Troubleshooting Guide
> **Note**: CCS has been recently simplified with a 35% code reduction (1,315 → 855 lines) while maintaining all functionality. The troubleshooting steps below apply to the simplified architecture.
## Native Installer Deprecation
**Issue:** "Why does the curl/irm installer show a deprecation warning?"
**Cause:** Native shell installers are deprecated in favor of npm installation.
**Solution:**
```bash
# Uninstall legacy version (if installed via curl/irm)
ccs-uninstall # or: curl -fsSL ccs.kaitran.ca/uninstall | bash
# Install via npm (recommended)
npm install -g @kaitranntt/ccs
```
**Note:** The legacy installer now auto-runs npm install if Node.js is available.
## npm Installation Issues
### Config File Not Found After npm Install
**Symptom**: After `npm install -g @kaitranntt/ccs`, running `ccs --version` shows error:
```
Config file not found: /home/user/.ccs/config.json
```
**Cause**: You may have installed with `--ignore-scripts` flag, which skips the postinstall script that creates config files.
**Solution**:
```bash
# Reinstall without --ignore-scripts
npm install -g @kaitranntt/ccs --force
# Or manually run postinstall
node $(npm root -g)/@kaitranntt/ccs/scripts/postinstall.js
# Or use traditional installer
curl -fsSL ccs.kaitran.ca/install | bash # macOS/Linux
irm ccs.kaitran.ca/install | iex # Windows
```
**Verify**:
```bash
ls -la ~/.ccs/
# Should show: config.json, glm.settings.json
```
### Check npm ignore-scripts Setting
```bash
# Check if ignore-scripts is enabled
npm config get ignore-scripts
# If true, disable it (or use --force on install)
npm config set ignore-scripts false
```
## Windows-Specific Issues
### PowerShell Execution Policy
If you see "cannot be loaded because running scripts is disabled":
```powershell
# Check current policy
Get-ExecutionPolicy
# Allow current user to run scripts (recommended)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Or run with bypass (one-time)
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.ccs\ccs.ps1" glm
```
### PATH not updated (Windows)
If `ccs` command not found after installation:
1. Restart your terminal
2. Or manually add to PATH:
- Open "Edit environment variables for your account"
- Add `%USERPROFILE%\.ccs` to User PATH
- Restart terminal
### Claude CLI not found (Windows)
```powershell
# Check Claude CLI
where.exe claude
# If missing, install from Claude docs
```
## Claude CLI in Non-Standard Location
If Claude CLI is installed on a different drive or custom location (common on Windows systems with D: drives):
### Symptoms
```
╔═════════════════════════════════════════════╗
║ ERROR ║
╚═════════════════════════════════════════════╝
Claude CLI not found
Searched:
- CCS_CLAUDE_PATH: (not set)
- System PATH: not found
- Common locations: not found
```
### Solution: Set CCS_CLAUDE_PATH
**Step 1: Find Claude CLI Location**
*Windows*:
```powershell
# Search all drives
Get-ChildItem -Path C:\,D:\,E:\ -Filter claude.exe -Recurse -ErrorAction SilentlyContinue | Select-Object FullName
# Common locations to check manually
D:\Program Files\Claude\claude.exe
D:\Tools\Claude\claude.exe
D:\Users\<Username>\AppData\Local\Claude\claude.exe
```
*Unix/Linux/macOS*:
```bash
# Search system
sudo find / -name claude 2>/dev/null
# Or check specific locations
ls -la /usr/local/bin/claude
ls -la ~/.local/bin/claude
ls -la /opt/homebrew/bin/claude
```
**Step 2: Set Environment Variable**
*Windows (PowerShell) - Permanent*:
```powershell
# Replace with your actual path
$ClaudePath = "D:\Program Files\Claude\claude.exe"
# Set for current session
$env:CCS_CLAUDE_PATH = $ClaudePath
# Set permanently for user
[Environment]::SetEnvironmentVariable("CCS_CLAUDE_PATH", $ClaudePath, "User")
# Restart terminal to apply
```
*Unix (bash) - Permanent*:
```bash
# Replace with your actual path
CLAUDE_PATH="/opt/custom/location/claude"
# Add to shell profile
echo "export CCS_CLAUDE_PATH=\"$CLAUDE_PATH\"" >> ~/.bashrc
# Reload profile
source ~/.bashrc
```
*Unix (zsh) - Permanent*:
```bash
# Replace with your actual path
CLAUDE_PATH="/opt/custom/location/claude"
# Add to shell profile
echo "export CCS_CLAUDE_PATH=\"$CLAUDE_PATH\"" >> ~/.zshrc
# Reload profile
source ~/.zshrc
```
**Step 3: Verify Configuration**
```bash
# Check environment variable is set
echo $CCS_CLAUDE_PATH # Unix
$env:CCS_CLAUDE_PATH # Windows
# Test CCS can find Claude
ccs --version
# Test with actual profile
ccs glm --version
```
### Common Issues
**Invalid Path**:
```
Error: File not found: D:\Program Files\Claude\claude.exe
```
**Fix**: Double-check path, ensure file exists:
```powershell
Test-Path "D:\Program Files\Claude\claude.exe" # Windows
ls -la "/path/to/claude" # Unix
```
**Directory Instead of File**:
```
Error: Path is a directory: D:\Program Files\Claude
```
**Fix**: Path must point to `claude.exe` file, not directory:
```powershell
# Wrong
$env:CCS_CLAUDE_PATH = "D:\Program Files\Claude"
# Right
$env:CCS_CLAUDE_PATH = "D:\Program Files\Claude\claude.exe"
```
**Not Executable**:
```
Error: File is not executable: /path/to/claude
```
**Fix** (Unix only):
```bash
chmod +x /path/to/claude
```
### WSL-Specific Configuration
When using Windows Claude from WSL:
```bash
# Mount path format: /mnt/d/ for D: drive
export CCS_CLAUDE_PATH="/mnt/d/Program Files/Claude/claude.exe"
# Add to ~/.bashrc for persistence
echo 'export CCS_CLAUDE_PATH="/mnt/d/Program Files/Claude/claude.exe"' >> ~/.bashrc
source ~/.bashrc
```
**Note**: Spaces in Windows paths work correctly from WSL when quoted properly.
### Debugging Detection
To see what CCS checked:
```bash
# Temporarily move claude out of PATH to test
# Then run ccs - error message shows what was checked
ccs --version
# Will show:
# - CCS_CLAUDE_PATH: (status)
# - System PATH: not found
# - Common locations: not found
```
### Alternative: Add to PATH Instead
If you prefer not using CCS_CLAUDE_PATH, add Claude directory to PATH:
*Windows (PowerShell)*:
```powershell
# Add D:\Program Files\Claude to PATH
$ClaudeDir = "D:\Program Files\Claude"
$env:Path += ";$ClaudeDir"
[Environment]::SetEnvironmentVariable("Path", $env:Path, "User")
# Restart terminal
```
*Unix (bash)*:
```bash
# Add /opt/claude/bin to PATH
echo 'export PATH="/opt/claude/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
**Note**: CCS_CLAUDE_PATH takes priority over PATH, allowing per-project overrides.
## Installation Issues
### BASH_SOURCE unbound variable error
This error occurs when running the installer in some shells or environments.
**Fixed in latest version**: The installer now handles both piped execution (`curl | bash`) and direct execution (`./install.sh`).
**Solution**: Upgrade to the latest version:
```bash
curl -fsSL https://raw.githubusercontent.com/kaitranntt/ccs/main/installers/install.sh | bash
```
### Git worktree not detected
If installing from a git worktree or submodule, older versions may fail to detect the git repository.
**Fixed in latest version**: The installer now detects both `.git` directory (standard clone) and `.git` file (worktree/submodule).
**Solution**: Upgrade to the latest version or use the curl installation method.
## Configuration Issues
### Profile not found
```
Error: Profile 'foo' not found in ~/.ccs/config.json
```
**Fix**: Add profile to `~/.ccs/config.json`:
```json
{
"profiles": {
"foo": "~/.ccs/foo.settings.json"
}
}
```
### Settings file missing
```
Error: Settings file not found: ~/.ccs/foo.settings.json
```
**Fix**: Create settings file or fix path in config.
### jq not installed
```
Error: jq is required but not installed
```
**Fix**: Install jq (see installation guide).
**Note**: The installer creates basic templates even without jq, but enhanced features require jq.
## PATH Configuration Issues
### Auto PATH Configuration
v2.2.0+ automatically configures shell PATH. If you see reload instructions after install, follow them:
**For bash**:
```bash
source ~/.bashrc
```
**For zsh**:
```bash
source ~/.zshrc
```
**For fish**:
```fish
source ~/.config/fish/config.fish
```
**Or open new terminal window** (PATH auto-loaded).
### PATH Not Configured
If `ccs` command not found after install and reload:
**Verify PATH entry exists**:
```bash
# For bash/zsh
grep "\.local/bin" ~/.bashrc ~/.zshrc
# For fish
grep "\.local/bin" ~/.config/fish/config.fish
```
**Manual fix** (if auto-config failed):
Bash:
```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
Zsh:
```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```
Fish:
```fish
echo 'set -gx PATH $HOME/.local/bin $PATH' >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish
```
### Wrong Shell Profile
If auto-config added to wrong file:
**Find active profile**:
```bash
echo $SHELL # Shows current shell
```
**Common scenarios**:
- macOS bash uses `~/.bash_profile` (not `~/.bashrc`)
- Custom shells need manual config
- Tmux/screen may use different shell
**Solution**: Manually add PATH to correct profile file.
### Shell Not Detected
If installer couldn't detect shell:
**Symptoms**:
- No PATH warning shown
- `ccs` command not found after install
**Solution**: Manual PATH setup (see above).
### Default profile missing
```
Error: Profile 'default' not found in ~/.ccs/config.json
```
**Fix**: Add "default" profile or always specify profile name:
```json
{
"profiles": {
"default": "~/.claude/settings.json"
}
}
```
## Common Problems
### Claude CLI not found
**Error Message**:
```
╔═════════════════════════════════════════════╗
║ ERROR ║
╚═════════════════════════════════════════════╝
claude command not found
```
**Solution**: Install Claude CLI from [official documentation](https://docs.claude.com/en/docs/claude-code/installation).
### Permission denied
```
Error: Permission denied: ~/.local/bin/ccs
```
**Solution**: Make the script executable:
```bash
chmod +x ~/.local/bin/ccs
```
### Config file not found
**Error Message**:
```
╔═════════════════════════════════════════════╗
║ ERROR ║
╚═════════════════════════════════════════════╝
Config file not found: ~/.ccs/config.json
Solutions:
1. Reinstall CCS:
curl -fsSL ccs.kaitran.ca/install | bash
2. Or create config manually:
mkdir -p ~/.ccs
cat > ~/.ccs/config.json << 'EOF'
{
"profiles": {
"glm": "~/.ccs/glm.settings.json",
"default": "~/.claude/settings.json"
}
}
EOF
```
**Solution**: Re-run installer or create config manually:
```bash
mkdir -p ~/.ccs
cat > ~/.ccs/config.json << 'EOF'
{
"profiles": {
"glm": "~/.ccs/glm.settings.json",
"default": "~/.claude/settings.json"
}
}
EOF
```
## Getting Help
If you encounter issues not covered here:
1. Check the [GitHub Issues](https://github.com/kaitranntt/ccs/issues)
2. Create a new issue with:
- Your operating system
- CCS version (`ccs --version`)
- Exact error message
- Steps to reproduce
## Debug Mode
Enable verbose output to troubleshoot issues:
```bash
ccs --verbose glm
```
This will show:
- Which config file is being read
- Which profile is being selected
- Which settings file is being used
- The exact command being executed
## Disable Colored Output
If color output causes issues in your terminal or logs:
```bash
export NO_COLOR=1
ccs glm
```
**Use Cases**:
- CI/CD environments
- Log file generation
- Terminals without color support
- Accessibility preferences
---
## GLMT Troubleshooting
### Thinking Blocks Not Visible
1. **Enable debug logging**:
```bash
export CCS_DEBUG_LOG=1
ccs glmt --verbose "test"
```
2. **Check raw response**:
```bash
cat ~/.ccs/logs/*response-openai.json | jq '.choices[0].message.reasoning_content'
```
3. **Scenarios**:
- **reasoning_content present**: Transformation issue → check response-anthropic.json
- **reasoning_content absent**: Z.AI API issue → verify API key/account status
### Duplicate "Enchanting" Lines
**Symptom**: Two spinner lines during thinking
**Cause**: Terminal rendering (not CCS issue)
**Solutions**:
- Use native terminal (iTerm2, GNOME Terminal, Windows Terminal)
- Exit tmux/screen before running
- Accept visual glitch (functionality unaffected)
### Proxy Startup Timeout
**Error**: "Proxy startup timeout (5s)"
**Solutions**:
```bash
# Try non-thinking mode
ccs glm "your prompt"
# Check Node.js
node --version # Requires ≥14
# Check port availability
netstat -an | grep 127.0.0.1
# Verbose details
ccs glmt --verbose "test"
```