ਇੱਕ ਸੈਂਡਬਾਕਸ (sandbox) ਉਦੋਂ ਹੀ ਲਾਹੇਵੰਦ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਇਹ ਅਸਲ ਵਿੱਚ ਏਜੰਟ ਨੂੰ ਘੇਰੇ ਦੇ ਅੰਦਰ ਰੱਖੇ। Claude Code 2.1.216 ਕਈ ਅਜਿਹੀਆਂ ਕਮੀਆਂ ਨੂੰ ਦੂਰ ਕਰਦਾ ਹੈ ਜੋ ਕਿਸੇ ਬੈਕਗ੍ਰਾਊਂਡ ਟਾਸਕ, ਸਬ-ਏਜੰਟ (subagent), ਜਾਂ ਰੀਜ਼ਿਊਮਡ ਸੈਸ਼ਨ (resumed session) ਨੂੰ ਉਸਦੀ ਨਿਰਧਾਰਤ ਡਾਇਰੈਕਟਰੀ ਤੋਂ ਬਾਹਰ ਜਾਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਰੀਲੀਜ਼ ਇੱਕ ਨਵਾਂ ਕੌਂਫਿਗਰੇਸ਼ਨ ਸਵਿੱਚ (configuration switch) ਪੇਸ਼ ਕਰਦੀ ਹੈ, ਪਰ ਅਸਲ ਕੰਮ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਹੋਇਆ ਹੈ: Git worktrees, symlinks, ਅਤੇ agent restarts ਦੀ ਸਮਾਰਟ ਹੈਂਡਲਿੰਗ। ਜੇਕਰ ਤੁਸੀਂ Claude Code ਨੂੰ ਸਥਾਨਕ (locally) ਜਾਂ CI ਵਿੱਚ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹ ਬਦਲਾਅ ਚੇਂਜਲੌਗ (changelog) ਨੂੰ ਸਿਰਫ਼ ਇੱਕ ਨਜ਼ਰ ਮਾਰਨ ਤੋਂ ਕਿਤੇ ਵੱਧ ਦੇਣਯੋਗ ਹਨ।
ਫਾਈਲਸਿਸਟਮ ਟੌਗਲ ਜਿਸ ਨੂੰ ਤੁਹਾਨੂੰ ਹਲਕੇ ਵਿੱਚ ਨਹੀਂ ਲੈਣਾ ਚਾਹੀਦਾ
ਵਰਜ਼ਨ 2.1.216 sandbox.filesystem.disabled ਜੋੜਦਾ ਹੈ। ਜਦੋਂ ਇਹ ਸੈੱਟ ਹੁੰਦਾ ਹੈ, Claude Code ਆਪਣੇ ਫਾਈਲਸਿਸਟਮ ਆਇਸੋਲੇਸ਼ਨ (filesystem isolation) ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ ਪਰ ਨੈੱਟਵਰਕ ਸੈਂਡਬਾਕਸ ਨੂੰ ਲਾਗੂ ਰੱਖਦਾ ਹੈ। ਪਹਿਲੀ ਨਜ਼ਰ ਵਿੱਚ ਇਹ ਪਰਮਿਸ਼ਨ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਣ ਜਾਂ ਫਾਈਲ ਆਪਰੇਸ਼ਨਾਂ ਦੀ ਰਫ਼ਤਾਰ ਵਧਾਉਣ ਦਾ ਤਰੀਕਾ ਲੱਗਦਾ ਹੈ। ਪਰ ਇਹ ਨਹੀਂ ਹੈ। ਤੁਹਾਨੂੰ ਇਹ ਸੈਟਿੰਗ ਉਦੋਂ ਹੀ ਚਾਲੂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਜੇਕਰ ਕੋਈ ਹੋਰ ਲੇਅਰ ਪਹਿਲਾਂ ਹੀ ਤੁਹਾਡੀ ਡਿਸਕ ਦੀ ਰੱਖਿਆ ਕਰ ਰਹੀ ਹੋਵੇ।
ਜਿਵੇਂ ਕਿ ਇੱਕ ਡਿਸਪੋਜ਼ੇਬਲ ਕੰਟੇਨਰ (disposable container) ਜੋ ਹਰ ਰਨ ਤੋਂ ਬਾਅਦ ਡਿਲੀਟ ਹੋ ਜਾਂਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਸਮਰਪਿਤ ਵਰਚੁਅਲ ਮ
ਇਸਨੂੰ ਕਿਸੇ ਰੁਟੀਨ ਪੈਚ ਵਾਂਗ ਨਾ ਸਮਝੋ ਜੋ ਤੁਸੀਂ ਸ਼ੁੱਕਰਵਾਰ ਦੀ ਦੁਪਹਿਰ ਨੂੰ ਇੰਸਟਾਲ ਕਰ ਲੈਂਦੇ ਹੋ। 2.1.216 ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਕਰਨ ਦਾ ਤਰੀਕਾ ਸਿੱਧਾ ਹੈ, ਪਰ ਗਲਤ ਕੌਂਫਿਗਰੇਸ਼ਨ ਦੇ ਨਤੀਜੇ ਗੁੰਝਲਦਾਰ ਹੋ ਸਕਦੇ ਹਨ।
ਪਹਿਲਾਂ, ਆਪਣੇ ਆਮ ਪੈਕੇਜ ਮੈਨੇਜਰ ਜਾਂ ਇੰਸਟਾਲਰ ਰਾਹੀਂ 2.1.216 ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਕਰੋ। ਫਿਰ ਕਿਸੇ ਵੀ ਏਜੰਟ ਟਾਸਕ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਆਇਸੋਲੇਸ਼ਨ ਪ੍ਰੋਫਾਈਲਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਚੋਣ ਕਰੋ। ਇਹ ਸਮਝੇ ਬਿਨਾਂ ਕਿ ਕਿਸ ਨੂੰ ਤਰਜੀਹ ਦਿੱਤੀ ਗਈ ਹੈ, ਚੱਲ ਰਹੇ ਸੈਸ਼ਨਾਂ ਵਿੱਚ ਪ੍ਰੋਫਾਈਲਾਂ ਨੂੰ ਮਿਲਾਓ ਨਾ।
ਅੱਗੇ, ਹੇਠਾਂ ਦਿੱਤੇ ਗਏ ਪੰਜ ਨਾਨ-ਡੈਸਟ੍ਰਕਟਿਵ (non-destructive) ਬਾਊਂਡਰੀ ਟੈਸਟ ਚਲਾਓ। ਇਹ ਤੇਜ਼, ਸਕ੍ਰਿਪਟਡ ਚੈੱਕ ਹਨ ਜੋ ਸਾਬਤ ਕਰਦੇ ਹਨ ਕਿ ਸੈਂਡਬਾਕਸ (sandbox) ਉਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਪ੍ਰੋਫਾਈਲ ਵਾਅਦਾ ਕਰਦੀ ਹੈ। ਟੈਸਟਿੰਗ ਦੌਰਾਨ, ਆਪਣੇ ਡਿਸਪੋਜ਼ੇਬਲ ਟੈਸਟ ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਬਾਹਰ ਦੀਆਂ ਫਾਈਲਾਂ ਲਈ ਸੈਂਟੀਨਲ ਹੈਸ਼ (sentinel hashes) ਬਣਾਓ। ਸੈਂਟੀਨਲ ਹੈਸ਼ ਸਿਰਫ਼ ਇੱਕ ਸੰਵੇਦਨਸ਼ੀਲ ਫਾਈਲ ਜਾਂ ਡਾਇਰੈਕਟਰੀ ਦਾ ਚੈੱਕਸਮ (checksum) ਹੈ ਜਿਸਦੀ ਤੁਸੀਂ ਰੱਖਿਆ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਟੈਸਟ ਚਲਾਉਣ ਤੋਂ ਬਾਅਦ, ਹੈਸ਼ਾਂ ਦੀ ਤੁਲਨਾ ਕਰੋ। ਜੇਕਰ ਕੁਝ ਵੀ ਬਦਲਿਆ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ ਆਇਸੋਲੇਸ਼ਨ ਲੀਕ ਹੋ ਰਿਹਾ ਹੈ।
ਆਪਣੇ ਲੌਗਸ (logs) ਦੀ ਵੀ ਤੁਲਨਾ ਕਰੋ। Claude Code ਆਪਣੇ ਲੋਕਲ ਲੌਗਸ ਵਿੱਚ ਮਨ੍ਹਾ ਕੀਤੇ ਗਏ ਕੰਮਾਂ ਅਤੇ ਸੈਂਡਬਾਕਸ ਘਟਨਾਵਾਂ ਨੂੰ ਲਿਖਦਾ ਹੈ। ਜਦੋਂ ਕਿਸੇ ਰੋਕੇ ਗਏ ਹੋਸਟ (host) ਤੱਕ ਪਹੁੰਚ ਕੀਤੀ ਜਾਂ ਜਦੋਂ ਕੋਈ ਸਬ-ਏਜੰਟ (subagent) ਆਪਣੇ ਵਰਕਟਰੀ (worktree) ਤੋਂ ਬਾਹਰ ਨਿਕਲਦਾ ਹੈ, ਤਾਂ ਸਪੱਸ਼ਟ ਰਿਜੈਕਸ਼ਨਾਂ ਦੀ ਭਾਲ ਕਰੋ। ਚੁੱਪਚਾਪ ਹੋਣ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ (silent failures) ਉੱਚੀ ਹੋਣ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ ਨਾਲੋਂ ਵਧੇਰੇ ਖ਼ਤਰਨਾਕ ਹਨ, ਇਸ ਲਈ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਲੌਗਸ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਗਾਰਡਰੇਲ (guardrails) ਕੰਮ ਕਰ ਰਹੇ ਹਨ।
ਅੰਤ ਵਿੱਚ, ਬਦਲਾਅ ਨੂੰ ਹੌਲੀ-ਹੌਲੀ ਲਾਗੂ ਕਰੋ। ਇੱਕ ਸਿੰਗਲ ਪ੍ਰੋਜੈਕਟ ਜਾਂ ਨਾਨ-ਪ੍ਰੋਡਕਸ਼ਨ ਬ੍ਰਾਂਚ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। ਆਪਣੀ ਪੂਰੀ ਟੀਮ ਜਾਂ CI ਫਲੀਟ ਵਿੱਚ ਇਸਨੂੰ ਤੈਨਾਤ (deploy) ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਨਵੇਂ ਵਰਜ਼ਨ ਨੂੰ ਇੱਕ ਜਾਂ ਦੋ ਦਿਨ ਚੱਲਣ ਦਿਓ।
ਪੰਜ ਬਾਊਂਡਰੀ ਟੈਸਟ ਜੋ ਸਾਬਤ ਕਰਦੇ ਹਨ ਕਿ ਤੁਹਾਡਾ ਸੈਂਡਬਾਕਸ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ
ਇਹਨਾਂ ਟੈਸਟਾਂ ਨੂੰ ਹਮੇਸ਼ਾ ਫੇਕ ਡੇਟਾ ਨਾਲ ਭਰੀ ਹੋਈ ਇੱਕ ਡਿਸਪੋਜ਼ੇਬਲ ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਅੰਦਰ ਚਲਾਓ। ਇਹਨਾਂ ਨੂੰ ਕਦੇ ਵੀ ਪ੍ਰੋਡਕਸ਼ਨ ਕੋਡ, ਅਸਲ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲਜ਼, ਜਾਂ ਲਾਈਵ ਇਨਫਰਾਸਟ੍ਰਕਚਰ 'ਤੇ ਨਾ ਲਗਾਓ।
ਨੈੱਟਵਰਕ ਬਾਊਂਡਰੀ (Network boundary)। ਦੋ ਐਂਡਪੁਆਇੰਟਾਂ ਤੱਕ ਪਹੁੰਚਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: ਇੱਕ ਜਿਸਨੂੰ ਤੁਸੀਂ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਹੈ ਅਤੇ ਇੱਕ ਜਿਸਨੂੰ ਤੁਸੀਂ ਰੋਕਿਆ ਹੈ। httpbin.org ਵਰਗੀ ਜਨਤਕ ਟੈਸਟ ਸੇਵਾ ਵਿਰੁੱਧ ਇੱਕ ਸਧਾਰਨ HTTP ਰਿਕਵੈਸਟ ਇਜਾਜ਼ਤ ਪ੍ਰਾਪਤ ਟਾਰਗੇਟ ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਇੱਕ ਲੋਕਲ ਮੈਟਾਡਾਟਾ ਐਂਡਪੁਆਇੰਟ ਜਾਂ ਅੰਦਰੂਨੀ IP ਨੂੰ ਰਿਕਵੈਸਟ ਅਸਫਲ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਜੇਕਰ ਰੋਕੀ ਗਈ ਰਿਕਵੈਸਟ ਸਫਲ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ ਨੈੱਟਵਰਕ ਸੈਂਡਬਾਕਸ ਗਲਤ ਤਰੀਕੇ ਨਾਲ ਕੌਂਫਿਗ ਕੀਤਾ ਗਿਆ ਹੈ।
ਵਰਕਟਰੀ ਆਇਸੋਲੇਸ਼ਨ (Worktree isolation)। ਇੱਕ ਸਬ-ਏਜੰਟ ਦੇ ਅੰਦਰੋਂ, ਪੇਰੈਂਟ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾਉਂਦੇ ਹੋਏ ਇੱਕ Git ਕਮਾਂਡ ਚਲਾਓ। ਉਦਾਹਰਨ ਲਈ, git -C .. status ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਏਜੰਟ ਨੂੰ ਆਪਣੇ ਚੈੱਕਆਊਟ ਤੋਂ ਬਾਹਰ ਦੀਆਂ ਫਾਈਲਾਂ ਦਾ ਵਰਣਨ ਕਰਨ ਲਈ ਕਹੋ। 2.1.216 ਵਿੱਚ ਫਿਕਸ ਦੇ ਨਾਲ, ਇਹ ਅਸਫਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਸਬ-ਏਜੰਟ ਨੂੰ ਸਿਰਫ਼ ਆਪਣਾ ਵਰਕਟਰੀ ਹੀ ਦਿਖਾਈ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।
ਸਿਮਲਿੰਕ ਟ੍ਰੈਪ (Symlink trap)। ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਅੰਦਰ ਇੱਕ symlink ਬਣਾਓ ਜੋ ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਬਾਹਰ ਕਿਸੇ ਡਾਇਰੈਕਟਰੀ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੋਵੇ, ਜਿਵੇਂ ਕਿ /tmp/sentinel-target। ਫਿਰ .claude ਪਾਥ ਦੇ ਅਧੀਨ ਕੋਈ ਟਾਸਕ ਜਾਂ ਵਰਕਫਲੋ ਸੇਵ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੋ ਉਸ ਲਿੰਕ ਰਾਹੀਂ ਲਿਖੇਗਾ। ਸੇਵ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਬਾਹਰਲੀ ਡਾਇਰੈਕਟਰੀ ਦੀ ਜਾਂਚ ਕਰੋ। ਜੇਕਰ ਇਹ ਅਜੇ ਵੀ ਖਾਲੀ ਹੈ, ਤਾਂ symlink ਹਾਰਡਨਿੰਗ ਕੰਮ ਕਰ ਰਹੀ ਹੈ।
ਰੀਵਾਈਂਡ ਸਕਿਪ (Rewind skip)। ਆਪਣੇ ਰੈਪੋ ਦੇ ਅੰਦਰ ਇੱਕ ਫੋਲਡਰ ਸੈੱਟ ਅੱਪ ਕਰੋ ਜਿਸ ਵਿੱਚ ਸਿਸਟਮ ਫਾਈਲ ਜਾਂ ਕਿਸੇ ਹੋਰ ਡਾਇਰੈਕਟਰੀ ਦਾ symlink ਹੋਵੇ। ਉਸ ਫੋਲਡਰ 'ਤੇ /rewind ਚਲਾਓ। Claude ਨੂੰ ਉਹਨਾਂ ਦੇ ਪਿੱਛੇ ਜਾਣ ਦੀ ਬਜਾਏ ਸਕਿਪ ਕੀਤੇ ਗਏ symlinked ਜਾਂ hard-linked ਪਾਥਾਂ ਦੀ ਸੂਚੀ ਦਿਖਾਉਣੀ ਚਾਹੀਦੀ ਹੈ। ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਰੈਪੋ ਤੋਂ ਬਾਹਰ ਦਾ ਟਾਰਗੇਟ ਅਛੂਤਾ ਰਹਿੰਦਾ ਹੈ।
ਸੈਸ਼ਨ ਰੀਜ਼ੁਰੈਕਸ਼ਨ (Session resurrection)। ਇੱਕ ਸਖ਼ਤ ਪਾਬੰਦੀ ਦੇ ਨਾਲ ਬੈਕਗ੍ਰਾਊਂਡ ਏਜੰਟ ਲਾਂਚ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਫਾਈਲ-ਰਾਈਟ ਟੂਲਸ ਨੂੰ ਡਿਸੇਬਲ ਕਰਨਾ। ਸੈਸ਼ਨ ਨੂੰ ਰੋਕੋ ਜਾਂ ਬੰਦ ਕਰੋ, ਫਿਰ ਇਸਨੂੰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰੋ। ਤੁਰੰਤ ਏਜੰਟ ਨੂੰ ਫਾਈਲ ਲਿਖਣ ਲਈ ਕਹੋ। ਜੇਕਰ ਪਾਬੰਦੀ ਅਜੇ ਵੀ ਸਰਗਰਮ ਹੈ, ਤਾਂ ਰੀਜ਼ਿਊਮਡ ਏਜੰ
